問題タブ [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.

0 投票する
15 に答える
105085 参照

c++ - srand を初期化する推奨方法は?

C++ で疑似乱数ジェネレーターを初期化する「良い」方法が必要です。次のような記事を見つけました。

乱数のような数値を生成するために、srand は通常、実行時間に関連する値など、特定の値に初期化されます。たとえば、関数 time によって返される値 (ヘッダー ctime で宣言) は 1 秒ごとに異なります。これは、ほとんどのランダム化のニーズに対して十分に特徴的です。

Unixtime は、私のアプリケーションには十分に特徴的ではありません。これを初期化するより良い方法は何ですか? 移植可能であればボーナス ポイントですが、コードは主に Linux ホストで実行されます。

int を取得するために pid/unixtime の計算を行うか、/dev/urandom.

ありがとう!

編集

はい、実際にアプリケーションを 1 秒間に複数回起動していますが、衝突が発生しました。

0 投票する
3 に答える
3259 参照

c++ - c++ で srand() を繰り返し呼び出すと、同じシードが使用されますか?

ドライバー ファイルのメインで srand(2) を宣言している場合、ドライバーにリンクされているコード ファイルで srand(2) を宣言する必要がありますか?

ありがとう。

編集

(以下、ユーザーのコメントより)

私が行った場合、

シードを 2 として取得できますか? または、他の何か?

0 投票する
3 に答える
12951 参照

c# - srand((unsigned)(time(NULL))); (rand())/(RAND_MAX/2) - 1 C# 相当

次のc++に相当するc#は何ですか:

0 投票する
4 に答える
2363 参照

c++ - 疑似乱数ジェネレーターを複数回シードする際の問題はありますか?

疑似乱数ジェネレーターを実行ごとに2回以上シードしないようにするための推奨事項をかなり多く見てきましたが、完全な説明を伴うことはありませんでした。もちろん、次の(C / C ++)の例が適切でない理由は簡単に理解できます。

get_rand1秒間に数回呼び出すと、結果が繰り返されるためです。

しかし、次の例はまだ許容できる解決策ではないでしょうか?

MyRand.h

MyRand.cpp

main.cpp

つまり、MyRand:sコンストラクターが連続して数回呼び出されても、への呼び出しごとsrandに異なるパラメーターがあります。明らかに、これはスレッドセーフではありませんが、やはりどちらもスレッドセーフではありませんrand

0 投票する
4 に答える
872 参照

c - 誰でもこれの何が問題なのかわかりますか(Cの時間関連の関数)

0 投票する
4 に答える
4751 参照

c++ - C++ で乱数ジェネレーターにシードされたものを調べる

srand() と rand() を使用しているアンマネージ C++ コンソール アプリケーションがあります。特定の問題を解決するためにこれは必要ありませんが、興味がありました: srand() に渡された元のシードは、クエリできるメモリのどこかに保存されていますか? 種子が何であったかを把握する方法はありますか?

0 投票する
1 に答える
1629 参照

c++ - s/randまたはBoost::randomの正しい使用

この種の質問が何度か聞かれたことは知っていますが、多くの回答はRTFMに要約されますが、正しい質問をすることができればと思います...他のすべての人に準決定的な回答を得ることができますさて、実装に関して。

次の2つの方法のいずれかで乱数のシーケンスを生成しようとしています。

myRand()は次のとおりです。

オプション1を実行するたびに、各ループの実行ごとに同じ番号が取得されます。ただし、プログラムの実行ごとに異なります。

オプション2を実行すると、Boostライブラリから82が取得されるため、0.81999999999999が返されます。42だったかどうかはわかりましたが、ブーストランダムドキュメントを読んだ後でも、82で頭を悩ませています。

何か案は?

DJS。

0 投票する
4 に答える
149 参照

algorithm - 疑似乱数の有限シーケンスに基づいてシードの近似値を取得することは可能ですか?

たとえば、652,328,1,254 などのシリーズを形成するいくつかの数字があり、たとえば、次の場合にシードを取得したいとします。

すべての数値が同じ順序で表示される場合、元の数列に対する有界誤差である種の近似値が得られます。

0 投票する
2 に答える
517 参照

perl - 疑似乱数発生器の状態を Perl に保存するにはどうすればよいですか?

組み込みの疑似乱数ジェネレーターの現在の状態を Perl に保存して、プログラムを再度実行したときに、新しいシーケンスから開始するのではなく、中断したところからシーケンスを取得できるようにする方法はありますか?

現在、私は最初のシードと同様に現在の場所を保存してから、次のようなものを使用して既に見た最初のセグメントを破棄しています。

例えば:

後で:

次に、$z[0] == $v[2]など$z[1] == $v[3]

0 投票する
4 に答える
3757 参照

c - Cのsrand関数

ファイルを含めることができない組み込みCで乱数生成関数をコーディングしようとしていmath.hます。srandそのため、シード関数を使用できません。

時間以外にシードする方法はありますか?