我编写了以下代码来生成特定数字 {0,1,2,...,31} 的随机序列。它工作正常,但是不能保证在任何有限的时间内完成;在任何间隔之后,它仍然只有一定的(非常高的)概率完成。有什么建议可以消除这个问题吗?
int th;
vector<int> V2 = vector<int> (32,0);
for (int k=0;k<32;k++){
do{
th = rand() % 32;
} while ( V2[th] == 0 );
V2[th] = k;
}