首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::shuffle的用法和用法?

问std::shuffle的用法和用法?
EN

Stack Overflow用户
提问于 2013-07-18 21:30:34
回答 1查看 996关注 0票数 4

如果你看一下C++11中的随机混洗的规范,你会发现有3个函数。我的问题是:典型的用法和优势是什么:

代码语言:javascript
复制
template< class RandomIt, class URNG >
void shuffle( RandomIt first, RandomIt last, URNG&& g );

对比:

代码语言:javascript
复制
template< class RandomIt >
void random_shuffle( RandomIt first, RandomIt last );

我的意思是,似乎无论URNG是什么(均匀分布),结果都将是相同的(从统计角度来看)。我看到的唯一的一点是,std::shuffle是头安全的,而std::random_shuffle的重载不是。你能确认一下吗?

编辑:我认为URNG应该是一个统一的发行版,但似乎没有编译。那么有没有人可以提供一个std::shuffle用法的小示例

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-19 16:17:30

正如评论中提到的,std::shuffle采用随机数生成器(或标准说法中的引擎),而不是随机数分布。不同的随机数生成器具有不同的特征,即使它们具有理论上均匀的分布。

  • Random或伪随机-真随机数生成器使用某种外部熵源。伪随机生成器(PRNG)是严格的长度-一些生成器比others.
  • Memory使用率更快-一些PRNG需要比others.
  • Period deterministic.
  • Performance 更多的内存来存储它们的状态-所有PRNG都有一个有限的周期,在此之后它们开始从头开始重复相同的序列。有些比others.
  • Randomness quality的周期要长得多--有numerous tests用来衡量是否有微妙的(或不那么微妙的!)伪随机流中的模式。例如,查看流是否为的Diehard tests.
  • Whether。AFAIK,所有标准PRNG都不是。

有关该标准提供的不同生成器的概述,请参阅http://en.cppreference.com/w/cpp/numeric/random。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17724876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档