ホームページ > バックエンド開発 > C++ > rand() が同じ数値を生成するのはなぜですか?それを修正するにはどうすればよいですか?

rand() が同じ数値を生成するのはなぜですか?それを修正するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-14 16:05:13
オリジナル
217 人が閲覧しました

Why Does rand() Generate the Same Numbers, and How Can I Fix It?

非ランダムな rand() 動作の解決

rand() 関数を利用してプログラムを実行するとき、ユーザーは一貫性を得るという問題に頻繁に遭遇します。数値シーケンス。この記事では、この動作の原因を調査し、真のランダム性を確保するための解決策を提案します。

rand() 関数は、本質的にランダムではなく、特定のアルゴリズムに基づいて擬似乱数を生成します。これらのアルゴリズムは、シードまたは以前の乱数を使用して数学的変換を受け、その結果、非ランダム性が観察されます。

この問題を克服するには、乱数ジェネレーターにランダム シードを設定する必要があります。これは、システム時間またはその他の非決定的なソースに基づく引数を指定した srand() 関数を使用して実現できます。シードを毎回異なる値で初期化することで、乱数生成アルゴリズムを効果的にリセットし、よりランダムな結果を保証します。

次の例を考えてみましょう:

#include <iostream>
#include <cstdlib>
#include <ctime>

int main() {
    srand((unsigned int)time(NULL));
    std::cout << rand() << std::endl;
    return 0;
}
ログイン後にコピー

この例では、現在のシステム時間から派生したシードを使用して srand() を使用します。システム時間が継続的に変化するにつれて、乱数シーケンスも変化し、真のランダム性がもたらされます。

擬似乱数ジェネレータの概念の詳細については、提供されているドキュメントを参照してください。リンク:

  • http://www.dreamincode.net/forums/topic/24225-random-number-generation-102/
  • htt p://www.dreamincode.net/forums/topic/29294-making-pseudo-random-number-generators-more-random/

以上がrand() が同じ数値を生成するのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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