私はちょうどC++を学んでいます。範囲内のユニークな要素の集合を生成する
0から9までの4つの異なるintのベクトルを作成しようとしています。私はプログラムが実行されるたびに異なる乱数を得るために、シードとrandint()関数を使用しています。私が持っている問題は、乱数を受け取った後で、その値がすでにベクトルに保持されていないことを確認する方法です。私のコードの例。
int seed()
{
// Produce computers numbers
int seed;
int x;
cout << "Please enter any Integer!\n";
cin >> x;
seed = randint(x) % 10;
return seed;
}
int main()
{
while(keys.size() !=4)
{
key = seed();
}
}
あなたはint型のキーを見ることができるようになりました乱数を保持しているが、私は、キーが現在のベクトルで開催された他の番号から一意であることを確認するまで(キー)keys.push_back使用したくありません。
0-9のベクトルを作り、それをシャッフルしてから最初の4つの要素をつかみましょう。 – NathanOliver
おそらく['std :: find'](http://en.cppreference.com/w/cpp/algorithm/find)が必要です。 [algortihms](http://en.cppreference.com/w/cpp/header/algorithm)が利用可能で、['ベクトル'](http://en.cppreference.com/w/cpp/container /ベクトル)を提供しなければなりません。 – nwp
正直なところ、私はベクトルをシャッフルする方法を学んでいないので。これは私が読んでいる本の練習であり、あなたはrandint()を使いたいと思っています。また、プログラムの他の部分では、ユーザーが自分の4つの数字を推測しようとするために自分の4つの数字を入力するようになっているので、私はどのように知る必要があります。その上に、彼らは正しい順序で数を推測しなければならない。だから私はプログラムの中でこれを再びテストできるようにする必要があるだろう。今、私は困った。 –