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 が 2 回出現するため、不正解です。
ベストアンサー1
置き換えなしでサンプリングだけが必要な場合:
>>> import random
>>> random.sample(range(1, 100), 3)
[77, 52, 45]
ランダムサンプル母集団とサンプル サイズを受け取り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