/StackOverflow上回答以及許多其他'教程'等。C++ 11梅森難題產生相同的值每次
儘管下面,我所知道的,我的代碼生成每一次我運行相同的「隨機」號的所有建議。它看起來並不像我在做什麼不同於我應該做的事情。爲什麼這不起作用?在代碼/
#include <random>
#include <iostream>
using namespace std;
random_device rd; // used to initialise (seed) engine
mt19937 mt(rd()); // random-number engine used (Mersenne-Twister in this case)
uniform_int_distribution<int> dist(1, 4); // guaranteed unbiased
後來在一個函數中:
for (it : vec_one) {
int rand_int = dist(mt); // Generate Random Number
switch (rand_int)
{
case 1:
cout << "One!" << endl;
case 2:
cout << "Two!" << endl;
case 3:
cout << "Three!" << endl;
case 4:
cout << "Four!" << endl;
default:
break;
}
}
從評論 switch語句中缺少休息答案。這真的很簡單。發電機正常工作。我忘記把它們包括在我過於樂觀的狀態中,感覺很愚蠢。 但是... 的是跳過這個問題上的亮點是多麼容易做到的意見和答案的數量。我覺得略少愚蠢現在......
工作得很好,我見[這裏](http://coliru.stacked-crooked.com/a/61540450cafd9f1b)的活生生的例子,不知道自己在做什麼。你能發佈一個最小的可編譯示例嗎?順便說一下,你在'case'語句中沒有'break',所以你將會遇到case開關,最終你會得到'One!二!三!作爲展示的四個! – vsoftco
你確定這是MSVC,而不是MinGW或什麼?最後我知道,libstdC++的Windows實現不會使'random_device'不確定(從標準的角度來看,這仍然是完全合法的)。 – chris
在你的系統上'cout << rd.entropy()'的結果是什麼?另見http://www.cplusplus.com/reference/random/random_device/。如果你的系統沒有一個實際的非確定性隨機數發生器,你不會期望每次看到不同的序列(而'entropy()'理論上將返回0),並且應該使用[mt19937]構造函數一個實際的種子,而不是](http://www.cplusplus.com/reference/random/mersenne_twister_engine/mersenne_twister_engine/)(另請參閱這裏的例子)。 –