特定の数字 {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;
}