C++11:マルチスレッドと乱数シーケンスの重複問題の生成


  • 問題の背景は最近1つのアウトソーシングを受けて、1つのマルチスレッドシミュレーション問題に出会って、乱数シミュレーションキューを生成して、ランダムに0と1の出力を生成する時、出力の結果はすべて1列0 1列1で、ランダムに交互の結果を得ることができないことを不思議に発見します.
  • 原因究明:srand(unsigned int)time(NULL))の種子は秒単位であり、マルチスレッドの場合、同じ種子(1秒以内)のように、複数のスレッドが実行される可能性があり、出力結果が重複することが明らかになった.
  • ソリューションは、下のc++ドキュメントを参照し、c++11で新しい方法を見つけました.ヘッダファイルにrandom_があります.デバイスメソッドは、この問題を解決することができます.
  • 	#include
    	random_device e;
    	int num = e()%2;
    	printf("%d
    "
    , num);