所以我有这段代码:
int* get_lotto_draw() //Returns an array of six random lottery numbers 1-49
{
int min = 1;
int max = 49;
int counter = 0;
srand(time(NULL));
int *arrayPointer = malloc(6 * sizeof(int));
for(counter = 0; counter <= 5; counter++)
{
arrayPointer[counter] = rand()%(max-min)+min;
}
return arrayPointer;
}
这给了我6 int *但有时这些int *值可以是相同的。我如何将它们中的每一个进行比较,以便如果它们是相同的数字,它将重新计算相等的值?谢谢你的时间。
答案 0 :(得分:1)
在将数字存储为
之前,在数组中搜索相同的数字for(counter = 0; counter <= 5; counter++)
{
int x1 = 1;
while(x1)
{
int temp = rand()%(max-min)+min;
for(i = 0; i < counter; i++)
{
if(arrayPointer[i] == temp)
{
break;
}
}
if(i == counter)
{
x1 = 0;
arrayPointer[counter] = temp;
}
}
}
答案 1 :(得分:0)
问题在于随机数生成器不知道或不关心历史(至少,不是你所做的那样 - 软件随机数生成器使用最近的结果来生成未来的结果)。所以,你的选择通常是......
在你的情况下,我会选择第三个。
int[]
)。for
循环初始化每个数组值。for
循环用随机索引交换每个条目。如果你将一个职位与自己交换,那很好。如果需要,您可以合并第二步和第三步,但拆分它们似乎更具可读性,并且不容易出错。