2014-03-19 48 views
1

我有一个从1-49到目前为止六个随机数组的数组,但有些重复,例如,12 15 43 43 22 15 是否有解决此问题的方法?C中非重复数组的数组?

到目前为止,我...

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

你试图解决什么问题?你需要6个唯一的号码吗? – Scott

回答

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); 
    } 
} 

Demo on ideone.

2

你可以简单地扔掉重复。

另一种选择是创建数字1-49,shuffle them数组,然后在第一个6

0

兰特功能并不知道它以前的输出,所以你可以把你检查保存之前在阵列中

0

如果您得到第一个随机数x,请找到第二个随机数作为random(1 to x-1)random(x+1 to n)的随机数。以这种方式继续。