C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

srandを1秒で何回も呼び出すときの乱数について

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■89807 / inTopicNo.1)  srandを1秒で何回も呼び出すときの乱数について
  
□投稿者/ しー (3回)-(2018/12/30(Sun) 19:35:52)

分類:[C/C++] 

C++における乱数について

srandで時刻で乱数シードを初期化したものの、
同時刻で呼び出してしまうと同じ値が帰ってきてしまいます。

何か良い策ないでしょうか?

引用返信 編集キー/
■89808 / inTopicNo.2)  Re[1]: srandを1秒で何回も呼び出すときの乱数について
□投稿者/ Hongliang (735回)-(2018/12/30(Sun) 19:47:12)
srandは通常、プログラムの起動時に1回だけ呼び出すものです。
なお標準ライブラリのrandは擬似乱数として最低レベルの品質なので、ごく簡単な使い方をするのでもなければ他のアルゴリズムを使った実装を使った方が良いです。
引用返信 編集キー/
■89814 / inTopicNo.3)  Re[2]: srandを1秒で何回も呼び出すときの乱数について
□投稿者/ アルハンブラ (8回)-(2019/01/02(Wed) 23:05:02)
やり方はいろいろありそうです。
思いつくものでは、

1. 排他制御を入れる
  → 単純に、同じタイミングで呼び出さなければ良いだけなのでmutexなりCriticalSectionなりで良いのでは?

2. 乱数で C++11 の std::randomを使う
  → 乱数の特性を変えて複数初期化すれば同じタイミングでも問題は無いはず。
   → c.f. http://vivi.dyndns.org/tech/cpp/random.html

というものがありそうです。
引用返信 編集キー/
■89835 / inTopicNo.4)  Re[3]: srandを1秒で何回も呼び出すときの乱数について
□投稿者/ しー (4回)-(2019/01/07(Mon) 16:44:33)
ありがとうございました。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ