首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`shuffle_order_engine`是干什么用的?

`shuffle_order_engine`是干什么用的?
EN

Stack Overflow用户
提问于 2015-10-03 15:02:29
回答 2查看 893关注 0票数 3

我想编写一行代码,对向量进行洗牌。自动完成建议shuffle_order_engine,这让我好奇它是什么,因为它的名字意味着它可以做我想做的。

通常,我使用std::shuffle(std::begin(v), std::end(v), gen)对向量进行洗牌,其中gen是随机数生成器(通常是mt19937_64)。

engine/ sais,shuffle_order_engine是:

一种引擎适配器类模板,它适应伪随机数生成器引擎类型,使数字以不同的顺序传递。

嗯,cplusplus.com没有提供一个例子。shuffle_order_engine是否与我的shuffle收养相同?

EN

回答 2

Stack Overflow用户

发布于 2015-10-03 15:22:48

不完全是。它缓冲伪rng的输出,并返回下几个结果中的任何一个,而不是下一个结果。结果,如果你要求一个相同大小的向量,然后用这个序列填充,然后对其进行改组,结果是相似的,但排列的分布略有不同。(我想)

如果你想要的是一个混乱的随机序列,那么当然。为什么要重新发明轮子?

票数 0
EN

Stack Overflow用户

发布于 2020-07-11 19:40:26

C++的shuffle_order_engine实现了类似于Bays-Durham洗牌的东西,而Bays-Durham洗牌是为了改善弱随机数生成器的随机性质量而设计的,而不一定像列表的随机洗牌一样。

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

https://stackoverflow.com/questions/32924002

复制
相关文章

相似问题

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