到目前为止,我有一组来自1-49的六个随机数,但有些重复,例如,12 15 43 43 22 15 有没有解决这个问题的方法?
到目前为止,我有......int* get_numbers()
{
int Array[6], i;
printf("\n\n Your numbers are : ");
for (i = 0; i < 6; i++)
{
Array[i] = ((rand() % 49) + 1);
printf("%d ",Array[i]);
}
}
任何反馈都会很棒,谢谢
答案 0 :(得分:2)
你可以简单地扔掉重复的东西。
另一种选择是创建一个数字1-49,shuffle them的数组,然后取第一个数字。
答案 1 :(得分:1)
您需要添加一个单独的循环,从0
开始,包括i
,独占,检查候选编号与之前添加到数组中的数字。如果检查发现重复,请不要递增i
,并尝试再次生成随机数:
int i = 0;
while (i != 6) {
int candidate = ((rand() % 49) + 1);
int ok = 1; // ok will become 0 if a duplicate is found
for (int j = 0 ; ok && j != i ; j++) {
ok &= (candidate != Array[j]);
}
if (ok) {
Array[i++] = candidate;
printf("%d ", candidate);
}
}
答案 2 :(得分:0)
rand函数不知道它以前的输出,所以你可以在将它保存到数组之前进行检查
答案 3 :(得分:0)
如果您将第一个随机数作为x
,请将第二个随机数作为random(1 to x-1)
和random(x+1 to n)
的随机数。以这种方式继续。