1

msvcrt の rand() 関数を使用して 3 つのサイコロの面を生成するプログラムの出力を予測しようとしています。コードは次のようなものだ dice[0] = rand() % 6 + 1; dice[1] = rand() % 6 + 1; dice[2] = rand() % 6 + 1;と思います: 、線形合同ジェネレーターの予測プログラムを使用して、シーケンス内の次の数値を予測できるかどうか疑問に思っていました。

4

2 に答える 2

4

自分で見て:C:\Program Files\Microsoft Visual Studio 8\VC\crt\src\rand.c

(または%VCINSTALLDIR%\crt\src\rand.c、VC コマンド プロンプトから実行している場合に使用します。)

(少なくとも標準バージョンの VCがあると仮定します。これは 2 行です。投稿したいと思いますが、ライセンスで許可されているかどうかはわかりません。)

于 2009-12-19T01:51:26.780 に答える
1

メモリが機能する場合、はい、それは線形合同ジェネレーターですが、それが返すのはより大きな出力の残りであり、次の数値を予測するのが難しくなります (3 つの出力よりもはるかに大きなサンプルが必要になる可能性があります)。とても頼りになります)。

于 2009-12-19T02:08:17.947 に答える