2016-12-06 14 views
6

Python 3.6では、new module, secretsが追加されました。Python `secret`モジュールを使って乱数を生成するには?

このモジュールを使用して範囲[n, m)にランダムな整数を生成する最も効率的な方法は何ですか?

私はchoice(range(n, m))を試しましたが、それが最善の方法だとは思わないです。 rangeは、Python 3に

n + secrets.randbelow(m-n)怠惰であることは、別のオプションであるため、

答えて

5

secrets.choice(range(n, m))は、問題ないはずです。それほど正確ではないので、私はそれを使用しません。

secretsrandom.Randomと同じインタフェースで、あなたはまた、独自のSystemRandomインスタンスを維持することができ、SystemRandomクラスへのアクセスを提供しているので:

my_secure_rng = secrets.SystemRandom() 

my_secure_rng.randrange(n, m) 
0

を行うsecretモジュールが提供しますrandomと同じインターフェイス。基本的なランダムジェネレータは、暗号的に強いSystemRandomに変更されました。

要するに、もう少しセキュリティが必要な状況でrandomと同じように使用してください。私はchoiceがあなたの懸念を保証するほどのパフォーマンスに苦しんでいるとは思わない。

0
import secrets 
num = secrets.randbelow(50) 
print(num) 
+1

もっと詳しく説明してください。 – rayryeng

関連する問題