【发布时间】:2015-04-08 03:01:54
【问题描述】:
如何在区间 [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/
【问题讨论】:
-
我认为没有更快的方法,除非您希望生成超出您选择范围的数字
标签: c++ performance random random-sample