首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c++中,对于序列中没有重复数,我应该选择哪个随机生成器?

在c++中,对于序列中没有重复数,我应该选择哪个随机生成器?
EN

Stack Overflow用户
提问于 2016-02-23 03:32:34
回答 1查看 111关注 0票数 1

我正在用c++11编程,如果可能的话,这个程序在mac、linux和windows上兼容得更好。如果没有,程序至少应该在linux上很好地工作,我不会考虑mac和windows平台。我想从a,b返回随机数序列。计数可能等于b-a或小于b-a。序列中的数字应该是不同的,例如0,10的9 8 6 1 3 0 7,不应该像2 8或3 1一样,重复数字。我应该使用哪个随机发生器?uniform_int_distribution?还是uniform_real_distribution?uniform_real_distribution比uniform_int_distribution好吗?或者还有其他可能的方法吗?我是否必须创建自己的随机数列表,像这样的Unique (non-repeating) random numbers in O(1)。耽误您时间,实在对不起。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-23 10:43:03

好吧,评论是对的,你需要一个洗牌策略。看看C++11中的以下示例:

代码语言:javascript
复制
std::vector<int> myNums(b-a);
std::iota(myNums.begin(), myNums.end(), a);
std::random_shuffle(myNums.begin(), myNums.end());

当然,您可以实现自己的方法,但是C++ STL默认实现了一些非常酷的标志。

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

https://stackoverflow.com/questions/35568310

复制
相关文章

相似问题

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