random 모듈의 sample 메서드
random 모듈의 sample 메서드는
시퀀스에서 요소를 무작위로 샘플링하여 반환합니다.
메서드의 첫 번째 매개변수에는 시퀀스를,
두 번째 매개변수에는 무작위로 선택하려는
요소의 개수를 지정합니다.
세 번째 선택적 키워드 매개변수 k를 통해
반복을 위한 요소 목록을 설정할 수 있습니다.
이를 통해 지정된 요소가 샘플링될 확률을
높일 수 있습니다. 이 메서드의 세 번째 매개변수는
Python 3.9 버전부터 추가되었음에
유의하세요.
구문
import random
random.sample(시퀀스, 요소_개수, [k=반복])
예제
리스트에서 무작위로 세 요소를 가져와 봅시다:
lst = [1, 2, 3, 4, 5]
print(random.sample(lst, 3))
코드 실행 결과:
[2, 1, 5]
예제
튜플에서도 무작위 요소를 샘플링해 봅시다:
tpl = (1, 2, 3, 4, 5)
print(random.sample(tpl, 2))
코드 실행 결과:
[3, 2]
예제
range 함수가 생성하는 시퀀스에서도
요소를 선택할 수 있습니다:
print(random.sample(range(0, 10), 3))
코드 실행 결과:
[0, 8, 9]
예제
이제 리스트를 가져와 counts 매개변수를 사용하여
리스트의 각 요소에 대한 반복 횟수를 지정해 봅시다.
첫 번째 요소는 두 번, 두 번째 요소는 세 번,
세 번째 요소는 네 번 반복되도록 해보겠습니다.
또한 출력할 요소 개수를 지정하기 위해
k 매개변수 이름을 명시해야 합니다:
lst = [1, 2, 3]
print(random.sample(lst, counts=[2, 3, 4], k=3))
이 코드는 다음 코드와 동일합니다:
lst = [1, 1, 2, 2, 2, 3, 3, 3, 3] # 실제로는 이 리스트와 같음
print(random.sample(lst, 3))
예제
이번에는 세트에서 요소를 가져와 보려고 합니다:
st = {1, 2, 3, 4, 5}
print(random.sample(st, 2))
다음 오류가 반환됩니다:
[5, 2]
DeprecationWarning: Sampling from a set deprecated
since Python 3.9 and will be removed in a subsequent version.
print(random.sample(st, 2))
이는 Python 3.9 버전부터는
세트에서 샘플링하는 기능이 제공되지 않기 때문입니다.