標準是否保證如果std::mt19937
被相同的數字植入,它會在所有平臺上生成相同的數字序列?重現C++ 11隨機生成器的相同結果
換句話說,它的實現是由標準定義好還是像std::rand()
這被認爲是實現細節?
標準是否保證如果std::mt19937
被相同的數字植入,它會在所有平臺上生成相同的數字序列?重現C++ 11隨機生成器的相同結果
換句話說,它的實現是由標準定義好還是像std::rand()
這被認爲是實現細節?
In [rand.eng.mars] 1-5該段落基本總結了mersenne twister algorithm的實現細節。
std::mt19937
僅僅是
using mt19937 =
mersenne_twister_engine<uint_fast32_t,
32,624,397,31,0x9908b0df,11,0xffffffff,7,0x9d2c5680,15,0xefc60000,18,1812433253>;
一個typedef和所有的標準說,有關的預期結果是:
要求的行爲:10000次一 默認構造的對象連續調用類型mt19937應產生值 4123659995.
沒有其他保證。
但是,因爲std::mersenne_twister_engine
需要遵循mersenne twister PRNG實施,所以它的實施是明確定義的。
我認爲它是實現定義 – CinCout