1

NES のような一部の古いゲーム コンソールでは、time(NULL) のようなシードなしで乱数を生成する方法を常に考えていました。

ありがとう

4

1 に答える 1

2

これは、その後のキーの押下、ジョイスティックの動き、または同様の人間による相互作用の間の時間を使用して行うことができます。たとえばマイクロ秒単位でイベントの時間を計測し、100を法として取ることができる場合は、妥当なシードで終了します。必要に応じて、これを数回実行して、十分な大きさ(つまり、64ビット)のシードを作成するのに十分なビットを収集することもできます。

シードの人間の相互作用に依存できない他のいくつかのシステムでは、リセット回路はRC回路を使用しますが、コンポーネントのバリエーションにより、この時間はすべてのシステムでわずかに異なります。外部(CPUに依存しないカウンター)は、電源投入時に起動し、起動時にCPUによって読み取ることができます。カウンタがリセット回路の時定数に対して十分な分解能を持っている場合、最後のビットをシードとして使用できます。これは、イーサネット時代の前に、ネットワークデバイスによってMAC相当のアドレスを生成するためにずっと前に使用されていました。

--ga

于 2012-05-18T21:54:29.453 に答える