범위 내에서 'n'개의 고유한 난수 생성
Python에서 범위 내에서 난수를 생성하는 방법을 알고 있습니다.
random.randint(numLow, numHigh)
루프를 통해 n개의 숫자를 생성할 수 있다는 것을 알고 있습니다.
for x in range (0, n):
listOfNumbers.append(random.randint(numLow, numHigh))
단, 그 목록의 각 번호가 고유한지 확인해야 합니다.조건문의 부하 외에 n개의 고유 난수를 생성하는 간단한 방법이 있습니까?
중요한 것은 목록의 각 번호가 다른 숫자와 다르다는 것입니다.
그렇게
[12, 5, 6, 1] = 좋아
그렇지만
[12, 5, 5, 1] = 나쁨, 숫자 5가 두 번 발생하기 때문입니다.
교체 없이 샘플링만 필요한 경우:
>>> import random
>>> random.sample(range(1, 100), 3)
[77, 52, 45]
random.sample은 모집단과 표본 크기를 취합니다.k
및 반환k
모집단의 무작위 구성원
만약 당신이 통제해야 한다면k
보다 크다len(population)
, 당신은 그것을 잡을 준비가 되어 있어야 합니다.ValueError
:
>>> try:
... random.sample(range(1, 2), 3)
... except ValueError:
... print('Sample size exceeded population size.')
...
Sample size exceeded population size
데이터 범위를 먼저 생성한 다음 이렇게 섞습니다.
import random
data = list(range(numLow, numHigh))
random.shuffle(data)
print data
이렇게 하면 특정 범위의 모든 숫자를 랜덤 순서로 얻을 수 있습니다.
그러나 다음과 같은 숫자의 범위에서 필요한 요소의 수를 얻기 위해 사용할 수 있습니다.
print random.sample(range(numLow, numHigh), 3)
에 추가할 수 있습니다.n
:
setOfNumbers = set()
while len(setOfNumbers) < n:
setOfNumbers.add(random.randint(numLow, numHigh))
적당한 범위보다 작은 범위를 갖는 것에 주의하십시오.n
. 삽입할 새 번호를 찾을 수 없어 영원히 루프됩니다.n
를 사용할 수 있습니다.random.sample
모집단에서 k개의 요소를 선택하는 기능을 수행합니다.
import random
random.sample(range(low, high), n)
가능한 숫자의 범위가 큰 경우, 다음을 사용할 수 있습니다.itertools.islice
무한 랜덤 발생기:
import itertools
import random
def random_gen(low, high):
while True:
yield random.randrange(low, high)
gen = random_gen(1, 100)
items = list(itertools.islice(gen, 10)) # Take first 10 random elements
질문 갱신을 통해 n개의 고유(고유) 번호가 필요함을 알 수 있게 되었습니다.
import itertools
import random
def random_gen(low, high):
while True:
yield random.randrange(low, high)
gen = random_gen(1, 100)
items = set()
# Try to add elem to set until set length is less than 10
for x in itertools.takewhile(lambda x: len(items) < 10, gen):
items.add(x)
언급URL : https://stackoverflow.com/questions/22842289/generate-n-unique-random-numbers-within-a-range
'source' 카테고리의 다른 글
아름다운 수프와 아이디로 디바와 내용물을 추출 (0) | 2022.09.11 |
---|---|
속성이 XPath로 시작하는 요소 선택 (0) | 2022.09.11 |
XAMPP에서 가상 호스트를 생성하는 방법 (0) | 2022.09.11 |
휴지 상태를 사용하여 MariaDb 드라이버 속성을 설정하는 방법 (0) | 2022.09.11 |
JavaScript에서 클래스를 정의하기 위해 사용할 수 있는 기술과 그 단점은 무엇입니까? (0) | 2022.09.11 |