1
我想使用<algorithm>
中的random_shuffle()
函數,但是當我查看它時,結果發現它使用了rand()
。這可以用於洗牌嗎?我的印象是,rand()
不是一個很好的隨機值來源,最好使用<random>
之類的Mersenne Twister。random_shuffle使用rand()可以嗎?
我想使用<algorithm>
中的random_shuffle()
函數,但是當我查看它時,結果發現它使用了rand()
。這可以用於洗牌嗎?我的印象是,rand()
不是一個很好的隨機值來源,最好使用<random>
之類的Mersenne Twister。random_shuffle使用rand()可以嗎?
的優選方法是使用std::shuffle
:隨機性
std::shuffle(begin(), end(), std::mt19937());
std::random_shuffle()
的源是未定義的。 Visual C++團隊對此進行了評論,稱他們將使用rand()
而不是更好的東西來保持向後兼容。
在C++ 14中,「random_shuffle」因爲這個原因而被棄用。 –