我正在用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)。耽误您时间,实在对不起。
发布于 2016-02-23 10:43:03
好吧,评论是对的,你需要一个洗牌策略。看看C++11中的以下示例:
std::vector<int> myNums(b-a);
std::iota(myNums.begin(), myNums.end(), a);
std::random_shuffle(myNums.begin(), myNums.end());当然,您可以实现自己的方法,但是C++ STL默认实现了一些非常酷的标志。
https://stackoverflow.com/questions/35568310
复制相似问题