我想生成唯一的随机数,并在这些随机数的函数中添加项目。这是我的代码:
问题是当我验证生成的数字是否存在于代码为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 :(得分:1)
results
是一个数组。这是一个内置的C ++类型。它不是类类型,也没有方法。所以这不起作用:
results.contains(randomNb)
您可能想要使用QList。像:
QList<int> results;
使用以下内容添加元素:
results << randomNb;
此外,代码中有一个off-by-one错误。您从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++;
}
}