ホームページ > バックエンド開発 > C++ > C 関数で srand() を繰り返し使用すると、ランダムでない結果が生じるのはなぜですか?

C 関数で srand() を繰り返し使用すると、ランダムでない結果が生じるのはなぜですか?

Mary-Kate Olsen
リリース: 2024-12-30 08:49:09
オリジナル
272 人が閲覧しました

Why Does Repeatedly Using `srand()` in a C   Function Lead to Non-Random Results?

rand() を使用して関数内で真にランダムな値を生成する

C では、 rand() を使用して単一関数内で乱数を生成します関数では値が繰り返し発生する可能性があります。この問題は、rand() を呼び出すたびに srand() が繰り返し呼び出される場合に発生します。

問題:

提供した例を考えてみましょう:

main() 内から PullOne() を複数回呼び出す場合、pull_1、pull_2、そしてpull_3。ただし、一貫して同じ結果が得られます。

解決策:

これを修正するには、srand() の呼び出しを PullOne() 関数の外側に移動し、プログラムの最初に一度だけ実行してください。これにより、乱数ジェネレーターを一度初期化し、後続の rand() 呼び出しで真にランダムなシーケンスが生成されるようにします。 () は乱数発生器のシードを設定します。同じシードが繰り返し使用される場合、ジェネレーターは同じシーケンスを生成します。 srand() を一度初期化すると、プログラム全体でシードが一貫し、rand() からの予測可能でランダムでない出力が得られます。

したがって、srand() を 1 回だけ、理想的にはプログラム中に呼び出すことが重要です。初期化時または乱数生成プロセスの開始時。これにより、関数内で真の乱数が確実に生成されます。

以上がC 関数で srand() を繰り返し使用すると、ランダムでない結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート