如果你看一下C ++ 11中随机shuffle的规范,有3个函数。我的问题是:典型的用途和优势是什么:
template< class RandomIt, class URNG >
void shuffle( RandomIt first, RandomIt last, URNG&& g );
与之相比:
template< class RandomIt >
void random_shuffle( RandomIt first, RandomIt last );
我的意思是,无论URNG是什么(均匀分布),结果都是相同的(从统计的角度来看)。我看到的唯一一点是,std::shuffle
是安全的,而std::random_shuffle
的重载则不是。{1}}。你能证实吗?
std::shuffle
的小例子吗?
答案 0 :(得分:2)
如评论中所述,std::shuffle
采用随机数生成器(或标准发言中的引擎),而不是随机数分布< / em>的。不同的随机数发生器即使具有理论上均匀的分布,也具有不同的特征。
有关该标准提供的不同发电机的概述,请参阅http://en.cppreference.com/w/cpp/numeric/random。