ベクトルをランダムな整数で埋めたいのですが、重複はできません。
まず、 numberOfSlotsのランダムな整数を 0 から 7 の範囲でベクトルに入れるコードがあります ( numberOfSlotsは 2 から 20 まで可能です)。
srand((unsigned int)time(NULL));
unsigned int min = 0;
unsigned int max = 7;
std::vector<unsigned int> v;
for (int i = 0; i < numberOfSlots; i++) {
unsigned int rdm = std::rand() % (max - min + 1) + min;
v.push_back(rdm);
}
これは、整数の重複が許可される場合のコードです。これはうまくいっています!
ここで、そのコードを変更して、可能な整数 ( minからmaxまで) の同じランダム プールから、生成されたランダム整数がベクトルにない場合にのみ追加されるようにします。
したがって、たとえばnumberOfSlotsが 5 の場合、ベクトルにはプールからランダムに選択された 5 つのエントリがありますが、同じではありません (例: 7、1、3、5、0) 。numberOfSlotsが 8 の場合、ベクトルはたとえば次のようになります。 3、1、2、7、6、0、4、5。
ベクトルなどをシャッフルする方法は知っていますが、これを機能させることができません。while ループを使用して、ベクトル内の既存のすべての整数を、追加する新しい乱数に対してチェックし、既にそこにある場合は、新しい乱数を生成して再度チェックする必要があると思いますが、わかりません
私は初心者で、これは本当に難しいです。誰かが私にヒントを与えることができますか?よろしくお願いします...どうもありがとう