【发布时间】:2013-07-18 13:30:34
【问题描述】:
如果你看一下 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 的重载则不是。你能确认一下吗?
编辑:我认为 URNG 应该是一个统一的分布,但似乎没有编译。那么有人可以提供一个使用std::shuffle的小例子吗?
【问题讨论】:
-
好吧,第一个让您选择随机数生成器。第二个没有。
-
我很难相信结果是一样的。你到底是怎么打电话给
std::shuffle的? -
@Xeo,当我说“相同”时,我的意思是“在统计上相同”。
-
@Vincent,您可以将其包装到分发对象中,例如
normal_distribution实例(在此处查看更多信息 cplusplus.com/reference/random/normal_distribution) -
你可以在cppreference找到一个std::shuffle的小例子
标签: c++ c++11 random shuffle stl-algorithm