私が使用するdjangoのビューでrandom.random()
。どのくらいの頻度で電話する必要がありますrandom.seed()
か? リクエストごとに 1 回ですか?毎シーズン一回?Web サーバーの実行中に 1 回ですか?
3 に答える
シードを設定しないでください。
シードを設定する必要があるのは、同じイベントが発生し続けるようにしたい場合だけです。たとえば、プレイヤーがゲームでチートを実行できないようにする場合は、シードを保存して、ゲームをロードするときに設定することができます。その後、何回セーブしてリロードしても、同じ結果が得られます。
random.seed()
あったとしてもめったに電話しないでください。
ランダムにするには、シードに触れずに乱数ジェネレーターを実行できるようにする必要があります。数字の並びはランダムです。シードを変更すると、新しいシーケンスが開始されます。シード値はあまりランダムではない可能性があり、問題が発生する可能性があります。
必要な数に応じて、シードを/dev/random
定期的にリセットすることを検討できます。
前のシードを使い切る直前に、シードをリセットするようにしてください。完全な 32 ビットの乱数を得ることはできないため、2**28 個の数値を生成した後にシードをリセットすることをお勧めします。
それは本当に乱数が必要なものに依存します。いくつかの実験を使用して、違いが生じるかどうかを確認してください。また、疑似乱数には実際にパターンがあることも考慮する必要があります。誰かが次の乱数を推測できるとしたら、あなたにとって違いはありますか? そうでない場合は、セッションの開始時またはサーバーの最初の起動時に一度シードします。
セッションの開始時に一度シードするのがおそらく最も理にかなっているでしょう、IMO. このようにして、ユーザーはセッション全体で疑似乱数のセットを取得します。ページが提供されるたびにシードする場合、これは保証されません。