如何使用std :: rand生成一个非重复的随机数序列

jus*_*rld 0 c++ random c++11

在最后一个例子中读取std :: uniform_int_distribution,生成的序列是:

1 1 6 5 2 2 5 5 6 2
Run Code Online (Sandbox Code Playgroud)

我如何保证所有生成的数字在它们之间有所不同?如果这是可能的,如果我们生成的数字多于游侠大小,那么预期的行为是什么?

我需要这个,因为我必须在cv::Mat数十万(甚至数百万)行中随机选择少量行(比如说10个).

Bat*_*eba 5

当然.对于真正的生成器,获取数字的可能性并不依赖于任何先前的数字.伪随机数生成器试图非常好地模拟这个属性.

如果你想生成没有重复的数字,那么你最好的选择是建立一个解决方案std::shuffle:即定义你想要的数字,然后将它们洗牌.