在Python 3.6中,增加了new module, secrets
。如何使用Python`secret`模塊生成隨機整數?
什麼是使用此模塊生成範圍爲[n, m)
的隨機整數的最有效方法?
我試過choice(range(n, m))
,但我懷疑這是最好的方法。
在Python 3.6中,增加了new module, secrets
。如何使用Python`secret`模塊生成隨機整數?
什麼是使用此模塊生成範圍爲[n, m)
的隨機整數的最有效方法?
我試過choice(range(n, m))
,但我懷疑這是最好的方法。
secrets.choice(range(n, m))
應該是很好的,因爲range
是懶的Python 3
n + secrets.randbelow(m-n)
是另一種選擇。我不會使用它,因爲它不太正確。
由於secrets
提供了訪問SystemRandom
類,具有相同的接口random.Random
,你也可以保持自己的SystemRandom
例如:
my_secure_rng = secrets.SystemRandom()
,做
my_secure_rng.randrange(n, m)
的secret
模塊提供與random
相同的界面;潛在的隨機發生器剛剛改爲SystemRandom
,這是密碼強。
簡而言之,在需要更多安全性的情況下,您可以像使用random
那樣使用它;我懷疑choice
遭受性能如此之大,以保證您的關注。
import secrets
num = secrets.randbelow(50)
print(num)
請給予更多解釋。 – rayryeng