私はマスターマインドゲームを解決するための遺伝的アルゴリズムを書いています。私は最善のアプローチについて多くの研究を行ってきましたが、多様な人口を持つことは非常に重要です。私はC ++で本当に良い乱数を取得する方法を決定しようとしています。私がやったsrand(time(NULL))
し、私は単純に使用していたシードを設定するために私のプログラムの開始時にrand()
。私が知りたいのは、それが本当にどれほどランダムかということです。かなりいいですか?乱数用のより良いライブラリは他にありますか?
私は数論とランダム性が非常に複雑な主題であることを知っています。独自のバージョンを作成する上での指針はありrand()
ますか?
暗号通貨の場合、乱数に非常に強力なプロパティが必要です。そこにある文献の多くは、この種の要件に焦点を合わせています。典型的な解決策は、環境ノイズ(ハードドライブの遅延、ネットワークパケット、マウスの動き、RDRAND、HAVEGEなど)を使用してSHA-256の反復アプリケーションをシードすることです。
モンテカルロシミュレーションまたはAIアプリケーションの場合、ランダム性の要件は実際にははるかに低くなります。実際、非常に単純なジェネレーターで十分です。最も基本的なのは悪名高い線形合同法です。これは、出力パターンが目立った不要なサンプリング効果を生み出すことがあるため、今では少し古風なものと見なされています(特に、70年代と80年代に行われたいくつかの実験的研究は、おそらくこの)。最近では、メルセンヌツイスターの人気が高まっており、コンピューターゲームには十分すぎるほどです。これは、C ++標準ライブラリで利用できます。std:: mt19937を参照してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加