2014-03-13 66 views
1

我想使用<algorithm>中的random_shuffle()函數,但是當我查看它時,結果發現它使用了rand()。這可以用於洗牌嗎?我的印象是,rand()不是一個很好的隨機值來源,最好使用<random>之類的Mersenne Twister。random_shuffle使用rand()可以嗎?

+0

在C++ 14中,「random_shuffle」因爲這個原因而被棄用。 –

回答

3

的優選方法是使用std::shuffle:隨機性

std::shuffle(begin(), end(), std::mt19937()); 

std::random_shuffle()的源是未定義的。 Visual C++團隊對此進行了評論,稱他們將使用rand()而不是更好的東西來保持向後兼容。