gpt4 book ai didi

c++ - 我应该为 C++ 中的序列中的无重复数字选择哪个随机生成器

转载 作者:行者123 更新时间:2023-11-30 02:33:22 25 4
gpt4 key购买 nike

我正在使用 C++11 进行编程。如果可能,该程序在 mac、linux 和 windows 上的兼容性更好。如果没有,程序至少在linux上应该能正常运行,我不会考虑mac和windows平台。我想从 [a, b] 返回随机数序列。计数可能等于 b-a 或小于 b-a。序列中的数字应该彼此不同,例如9 8 6 1 3 0 7 对于 [0, 10]。其中不应该有重复的数字,例如两个 8 或三个 1。我应该使用哪个随机生成器? uniform_int_distribution?或 uniform_real_distribution? uniform_real_distribution 是否比 uniform_int_distribution 更好?或者还有其他可能的方法吗?我是否必须像这样创建自己的随机数列表 Unique (non-repeating) random numbers in O(1) .感谢您的宝贵时间。

最佳答案

嗯,评论说的对,需要洗牌策略。看一下 C++11 中的以下示例:

std::vector<int> myNums(b-a);
std::iota(myNums.begin(), myNums.end(), a);
std::random_shuffle(myNums.begin(), myNums.end());

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

关于c++ - 我应该为 C++ 中的序列中的无重复数字选择哪个随机生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35568310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com