0から40までの乱数を生成しようとしています。 だから私は実装されたコードは、私がコンパイルクリックして実行]をヒットthis-乱数ジェネレータはどのようにCで動作しますか?
y=rand()%41;
しかし毎回です。同じ乱数を出力します。 たとえば、私はこれをループで実行しました。
for(i=0;i<4;i++)
{
y=rand()%41;
printf("%d ",y);
}
毎回、出力は同じ4つの数字です。端末には常に14,2などが出力されます。どんなものでも。
私の最初の質問は、なぜこれが起こっているのですか?
第2に、乱数ジェネレータはどのようにCで動作しますか?
私はtime.hライブラリを含めるので、数字はシステム時間を使っていくつかの標準的なアルゴリズムによって生成されると思った。システム時間が絶えず変化しているので、プログラムを実行するたびに生成される数値も変わるはずです。
もし 'x 'が' RAND_MAX'を分割しない 'rand()%x'を使うと、その分布は一様ではありません。 – harold
しかし、それはここでのポイントではありません。 –
@ H2CO3だからこそ、これはコメントであり、答えではありません。 – harold