2016-11-26 70 views
0

我有一个循环产生随机数。我想比较当前迭代中生成的随机数与所有先前迭代中生成的随机数,以及两个随机数之间匹配时的随机数。 这是我到目前为止,但它只比较当前随机数和它之前生成的随机数。C - 比较一个数组中的元素与以前的所有元素

for (i = 0; i < SIZE; ++i) 
{ 
    a[i] = (100*(1 + rand() % 12)) + (1 + rand() % 30); 

    for (j = i - 1; j < SIZE; ++j) 
    { 
     if (a[i] != a[j]) 
     { 
      printf("Person %i - %i\n", i, a[i]); 
     } 
     else break; 
    } 

} 
+1

您是否考虑在生成这些数字时保持数组排序? – hbagdi

+0

它看起来像生成的数字是在一个小范围内。您是否考虑过使用HashMap或者可能是一个位数组来跟踪到目前为止生成的随机数字? – hbagdi

+0

@hbagdi如何帮助?我只是一个初学者,我觉得这样会不必要地使事情复杂化。 –

回答

1

这是你在想什么?

for (i = 0; i < SIZE; ++i) 
{ 
    a[i] = (100*(1 + rand() % 12)) + (1 + rand() % 30); 
    found = 0; 
    for (j = 0; j < i; ++j) 
    { 
     if (a[i] == a[j]) 
     { 
      found = 1; 
      break; 
     } 
    } 
    if(!found) 
    { 
     printf("Person %i - %i\n", i, a[i]); 
    } 
    else 
     break; 
} 
+0

感谢您回复@SpiderPig!嗯,我试过,但它不起作用。现在SIZE = 100,并一直保持到99,我不知道为什么它每次迭代打印约10次 - 这是我一再重复的问题。 –

+0

等一下,我觉得它有用!我没有意识到你已经编辑了你的答案。 Grazie mille @SpiderPig –

相关问题