1
如何在区间[0,n-1]中生成k个唯一的随机数?在区间[0,n-1]中生成k个唯一的随机数?
我用下面的代码:
for(int i = 0 ; i < n ; ++i){
a[i]=i;
}
std::random_shuffle(a, a+n) ;
for(int i=0;i<k;++i){
ra[i]=a[i];
}
这需要前k个元素。
任何人都可以引用我一个更快的方法吗?
的std :: random_shuffle: http://www.cplusplus.com/reference/algorithm/random_shuffle/
我不认为有一个更快的方法,除非你想在你选择的范围外生成数字 – smac89 2015-02-08 07:42:22
可能的重复[在范围\ [0..n-1 \]范围内生成m个不同的随机数) (http://stackoverflow.com/questions/6947612/generating-m-distinct-random-numbers-in-the-range-0-n-1) – emlai 2015-02-08 07:50:52