rand() を使用して関数内で真にランダムな値を生成する
C では、 rand() を使用して単一関数内で乱数を生成します関数では値が繰り返し発生する可能性があります。この問題は、rand() を呼び出すたびに srand() が繰り返し呼び出される場合に発生します。
問題:
提供した例を考えてみましょう:
main() 内から PullOne() を複数回呼び出す場合、pull_1、pull_2、そしてpull_3。ただし、一貫して同じ結果が得られます。
解決策:
これを修正するには、srand() の呼び出しを PullOne() 関数の外側に移動し、プログラムの最初に一度だけ実行してください。これにより、乱数ジェネレーターを一度初期化し、後続の rand() 呼び出しで真にランダムなシーケンスが生成されるようにします。 () は乱数発生器のシードを設定します。同じシードが繰り返し使用される場合、ジェネレーターは同じシーケンスを生成します。 srand() を一度初期化すると、プログラム全体でシードが一貫し、rand() からの予測可能でランダムでない出力が得られます。
したがって、srand() を 1 回だけ、理想的にはプログラム中に呼び出すことが重要です。初期化時または乱数生成プロセスの開始時。これにより、関数内で真の乱数が確実に生成されます。以上がC 関数で srand() を繰り返し使用すると、ランダムでない結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。