2016-11-26 75 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 –