問題タブ [srand]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - srand を初期化する推奨方法は?
C++ で疑似乱数ジェネレーターを初期化する「良い」方法が必要です。次のような記事を見つけました。
乱数のような数値を生成するために、srand は通常、実行時間に関連する値など、特定の値に初期化されます。たとえば、関数 time によって返される値 (ヘッダー ctime で宣言) は 1 秒ごとに異なります。これは、ほとんどのランダム化のニーズに対して十分に特徴的です。
Unixtime は、私のアプリケーションには十分に特徴的ではありません。これを初期化するより良い方法は何ですか? 移植可能であればボーナス ポイントですが、コードは主に Linux ホストで実行されます。
int を取得するために pid/unixtime の計算を行うか、/dev/urandom
.
ありがとう!
編集
はい、実際にアプリケーションを 1 秒間に複数回起動していますが、衝突が発生しました。
c++ - c++ で srand() を繰り返し呼び出すと、同じシードが使用されますか?
ドライバー ファイルのメインで srand(2) を宣言している場合、ドライバーにリンクされているコード ファイルで srand(2) を宣言する必要がありますか?
ありがとう。
編集
(以下、ユーザーのコメントより)
私が行った場合、
シードを 2 として取得できますか? または、他の何か?
c# - srand((unsigned)(time(NULL))); (rand())/(RAND_MAX/2) - 1 C# 相当
次のc++に相当するc#は何ですか:
c++ - 疑似乱数ジェネレーターを複数回シードする際の問題はありますか?
疑似乱数ジェネレーターを実行ごとに2回以上シードしないようにするための推奨事項をかなり多く見てきましたが、完全な説明を伴うことはありませんでした。もちろん、次の(C / C ++)の例が適切でない理由は簡単に理解できます。
get_rand
1秒間に数回呼び出すと、結果が繰り返されるためです。
しかし、次の例はまだ許容できる解決策ではないでしょうか?
MyRand.h
MyRand.cpp
main.cpp
つまり、MyRand
:sコンストラクターが連続して数回呼び出されても、への呼び出しごとsrand
に異なるパラメーターがあります。明らかに、これはスレッドセーフではありませんが、やはりどちらもスレッドセーフではありませんrand
。
c++ - C++ で乱数ジェネレーターにシードされたものを調べる
srand() と rand() を使用しているアンマネージ C++ コンソール アプリケーションがあります。特定の問題を解決するためにこれは必要ありませんが、興味がありました: srand() に渡された元のシードは、クエリできるメモリのどこかに保存されていますか? 種子が何であったかを把握する方法はありますか?
c++ - s/randまたはBoost::randomの正しい使用
この種の質問が何度か聞かれたことは知っていますが、多くの回答はRTFMに要約されますが、正しい質問をすることができればと思います...他のすべての人に準決定的な回答を得ることができますさて、実装に関して。
次の2つの方法のいずれかで乱数のシーケンスを生成しようとしています。
myRand()は次のとおりです。
オプション1を実行するたびに、各ループの実行ごとに同じ番号が取得されます。ただし、プログラムの実行ごとに異なります。
オプション2を実行すると、Boostライブラリから82が取得されるため、0.81999999999999が返されます。42だったかどうかはわかりましたが、ブーストランダムドキュメントを読んだ後でも、82で頭を悩ませています。
何か案は?
DJS。
algorithm - 疑似乱数の有限シーケンスに基づいてシードの近似値を取得することは可能ですか?
たとえば、652,328,1,254 などのシリーズを形成するいくつかの数字があり、たとえば、次の場合にシードを取得したいとします。
すべての数値が同じ順序で表示される場合、元の数列に対する有界誤差である種の近似値が得られます。
perl - 疑似乱数発生器の状態を Perl に保存するにはどうすればよいですか?
組み込みの疑似乱数ジェネレーターの現在の状態を Perl に保存して、プログラムを再度実行したときに、新しいシーケンスから開始するのではなく、中断したところからシーケンスを取得できるようにする方法はありますか?
現在、私は最初のシードと同様に現在の場所を保存してから、次のようなものを使用して既に見た最初のセグメントを破棄しています。
例えば:
後で:
次に、$z[0] == $v[2]
など$z[1] == $v[3]
。
c - Cのsrand関数
ファイルを含めることができない組み込みCで乱数生成関数をコーディングしようとしていmath.h
ます。srand
そのため、シード関数を使用できません。
時間以外にシードする方法はありますか?