2016-11-26 6 views
0

私は乱数を生成するループを持っています。私は現在の反復で生成された乱数を、以前の反復で生成された乱数と比較したいと思います。break 2つの乱数の間に一致がある場合は比較します。 これはこれまで私が持っていたものですが、それは直前に生成されたものと現在の乱数を比較するだけです。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 –

関連する問題