2012-10-25 233 views
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++; 
     } 
    } 
+0

...和你的問題是......什麼? –

+0

你似乎離工作解決方案只有一步之遙。所有你需要的是一個函數,檢查一個特定的數字是否在一個數組(特定的大小)。然後你可以用一個對該函數的調用來替換'results.contains(randomNb)'。你有什麼理由不能自己寫這個函數嗎?這是你要求的幫助嗎? – john

+0

對不起,我編輯了我的問題^^ – Random78952

回答

1

results是一個數組。這是一個內置的C++類型。它不是類的類型,也沒有方法。所以這是行不通的:

results.contains(randomNb) 

你可能想改用QList。像:

QList<int> results; 

元素添加到它:

results << randomNb; 

此外,你必須在代碼中差一錯誤。從1開始計數(i = 1)而不是0.這會導致丟失最後一個數字。你應該改變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++; 
    } 
} 
+0

對不起,但我是一個非常糟糕的在qt和C++的begeigner,你可以在我的代碼中寫這個嗎?謝謝 ! – Random78952

+0

@RochesterFox我已經更新了答案。 –

+0

非常感謝!這是工作 ! – Random78952