4

私が使用するdjangoのビューでrandom.random()。どのくらいの頻度で電話する必要がありますrandom.seed()か? リクエストごとに 1 回ですか?毎シーズン一回?Web サーバーの実行中に 1 回ですか?

4

3 に答える 3

4

シードを設定しないでください。

シードを設定する必要があるのは、同じイベントが発生し続けるようにしたい場合だけです。たとえば、プレイヤーがゲームでチートを実行できないようにする場合は、シードを保存して、ゲームをロードするときに設定することができます。その後、何回セーブしてリロードしても、同じ結果が得られます。

于 2009-07-21T07:32:08.247 に答える
3

random.seed()あったとしてもめったに電話しないでください。

ランダムにするには、シードに触れずに乱数ジェネレーターを実行できるようにする必要があります。数字の並びはランダムです。シードを変更すると、新しいシーケンスが開始されます。シード値はあまりランダムではない可能性があり、問題が発生する可能性があります。

必要な数に応じて、シードを/dev/random定期的にリセットすることを検討できます。

前のシードを使い切る直前に、シードをリセットするようにしてください。完全な 32 ビットの乱数を得ることはできないため、2**28 個の数値を生成した後にシードをリセットすることをお勧めします。

于 2009-07-20T23:34:30.263 に答える
0

それは本当に乱数が必要なものに依存します。いくつかの実験を使用して、違いが生じるかどうかを確認してください。また、疑似乱数には実際にパターンがあることも考慮する必要があります。誰かが次の乱数を推測できるとしたら、あなたにとって違いはありますか? そうでない場合は、セッションの開始時またはサーバーの最初の起動時に一度シードします。

セッションの開始時に一度シードするのがおそらく最も理にかなっているでしょう、IMO. このようにして、ユーザーはセッション全体で疑似乱数のセットを取得します。ページが提供されるたびにシードする場合、これは保証されません。

于 2009-07-20T23:33:25.180 に答える