srand() 関数内の関数の動作
C で rand() 関数を操作する際、同じ関数内で関数を複数回呼び出すと、一貫して同じ値が得られるという問題が発生する可能性があります。この問題を解決するには、srand() 関数の動作を理解することが不可欠です。
srand() とは何ですか?また、それが重要なのはなぜですか?
srand() 関数は乱数生成器を初期化します。 srand() で再初期化せずに rand() 関数を繰り返し呼び出すと、同じシードから後続の数値が生成され続け、予測可能な結果が得られます。
>ランダム性を修正するソリューション
真のランダム性を確保するには、 srand() 関数は、特定の関数内ではなく、プログラムの先頭で 1 回だけ呼び出す必要があります。そうすることで、シードが 1 回だけ設定され、rand() 関数が後続の呼び出しを通じて真にランダムなシーケンスを生成できるようになります。
ソリューションの適用
提供されたコード スニペットでは、問題は PullOne() 関数内にあります。 srand() 関数は、rand() の各呼び出しの前に呼び出され、予測可能なシーケンスと繰り返しの結果が得られます。これを修正するには、srand() の呼び出しを main 関数の先頭に移動します。
int main() { std::srand(time(0)); string pull_1, pull_2, pull_3; pull_1 = PullOne(); pull_2 = PullOne(); pull_3 = PullOne(); return 0; }
この変更を適用すると、rand() 関数がpull_1、pull_2、およびpull_3.
以上がC rand() 関数が同じ値を返し続けるのはなぜですか? srand() を使用して修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。