税率
我正在编写一个函数,该函数为彩票游戏生成1到49之间的随机值数组。将随机值分配给数组中的每个插槽很容易(已经编写了一个起作用的值生成器),就像对数组中的值进行排序一样,但是随后我必须验证它们是否都是唯一的。
在此先感谢您的帮助,或者直接向我指出正确的方向。 (根据提示的建议找不到我要找的东西。)
void generateLottery(short lottery[], const short LENGTH, const short MIN, const short MAX) {
for (short i = 0; i < LENGTH; i++) {
short counter = 0;
lottery[i] = generateRandomValue(MIN, MAX);
while (lottery[counter] != NULL) {
if (lottery[i] == lottery[counter]) {
lottery[i] = generateRandomValue(MIN, MAX);
}
counter++;
}
}
sortLottery(lottery, LENGTH);
}
答案 0 :(得分:0)
代替
lottery[i] = generateRandomValue(MIN, MAX);
while (lottery[counter] != NULL) {
if (lottery[i] == lottery[counter]) {
lottery[i] = generateRandomValue(MIN, MAX);
}
counter++;
如果找到了号码,您可以只使用std::find
来生成一个新号码。像这样...
do
{
lottery[i] = generateRandomValue(MIN, MAX);
}while(std::find(lottery.begin(), lottery.end(), lottery[i]));
counter++;
正如其他人提到的那样,这不是最有效的方法,所以这完全取决于您希望拥有多少条目。
答案 1 :(得分:0)
创建一个由49个整数组成的数组,编号从1到49。随机排列数组。选择第一个n
元素。现在,您有n
个唯一的随机数,范围为1,49。
简单混洗: