0

一意の乱数を生成し、これらの乱数の関数でアイテムを追加したいと考えています。これが私のコードです:

問題は、生成された数値がコードで配列に存在するかどうかを確認するときですresults.contains(randomNb):

   int nbRandom = ui->randoomNumberSpinBox->value();
   //nbRandom is the number of the random numbers we want
   int i = 1;
   int results[1000];
   while ( i < nbRandom ){
       int randomNb = qrand() % ((nbPepoles + 1) - 1) + 1;
       if(!results.contains(randomNb)){
           //if randomNb generated is not in the array...
           ui->resultsListWidget->addItem(pepoles[randomNb]);
           results[i] = randomNb;
           //We add the new randomNb in the array
           i++;
       }
   }
4

1 に答える 1

1

results配列です。これは組み込みの C++ 型です。クラス型ではなく、メソッドがありません。したがって、これは機能しません:

results.contains(randomNb)

代わりに QList を使用することをお勧めします。お気に入り:

QList<int> results;

次のように要素を追加します。

results << randomNb;

また、コードに off-by-one エラーがあります。0 ではなく1 ( ) から数え始めますi = 1。これにより、最後の数が失われます。i初期化を次のように変更する必要があります。

int i = 0;

変更により、コードは次のようになります。

int nbRandom = ui->randoomNumberSpinBox->value();
//nbRandom is the number of the random numbers we want
int i = 0;
QList<int> results;
while ( i < nbRandom ){
    int randomNb = qrand() % ((nbPepoles + 1) - 1) + 1;
    if(!results.contains(randomNb)){
        //if randomNb generated is not in the array...
        ui->resultsListWidget->addItem(pepoles[randomNb]);
        results << randomNb;
        //We add the new randomNb in the array
        i++;
    }
}
于 2012-10-25T21:28:08.187 に答える