如果你看一下C++11中的随机混洗的规范,你会发现有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的重载不是。你能确认一下吗?
编辑:我认为URNG应该是一个统一的发行版,但似乎没有编译。那么有没有人可以提供一个std::shuffle用法的小示例
发布于 2013-07-19 16:17:30
正如评论中提到的,std::shuffle采用随机数生成器(或标准说法中的引擎),而不是随机数分布。不同的随机数生成器具有不同的特征,即使它们具有理论上均匀的分布。
有关该标准提供的不同生成器的概述,请参阅http://en.cppreference.com/w/cpp/numeric/random。
https://stackoverflow.com/questions/17724876
复制相似问题