-1
私は、各反復で重複した値(誕生日など)をチェックし、その中に重複値を持つ反復の数を返す解を書く必要があります。 1つの複製が見つかった場合は、現在の繰り返しを停止して、次の複製を開始することができます。重複した値を確認するにはどうすればよいですか?
私の解決策を変更する必要があります。この重複問題を解決するには、どのように解決策を書くべきか。
static int runSim(int thePeople, int theCount) {
int count = 0;
// Runs the Sim by Count
for(int i = 1; i <= theCount; i++) {
List<Integer> listOfGenNums = new ArrayList<>();
Random rand = new Random();
rand.setSeed(i);
ppl: for (int j = 0; j <= thePeople; j++) {
int genN = rand.nextInt(365);
// Add Values to Arraylist
listOfGenNums.add(j, genN);
// Converted ArrayList to Array
Object[] array = listOfGenNums.toArray();
// Check Item by Item
for(int h = 0; h <= array.length; h++) {
for(int k = i+1; k <= array.length-2; k++) {
// Checks if Index[i] is Same as Index[j]
if (array[h].equals(array[k])) {
count += 1;
break ppl;
} // End IF
} // End Inner Loop
} // End Loop
} // End People Loop
} // End Simulation Loop
return count;
}
for(int h = 0; h <= array.length; h ++) 'これは配列のインデックスが範囲外になるようにします。クイックダーティな解決策は、セットを作成し、配列を通り、各値を設定に追加することです。 Setのメソッドadd()は、valueがすでにセットされている場合はfalseを返します。 –
あなたはリストにいくつの重複があるのか知ることだけが必要ですか? –
はい現在のリストに少なくとも1つの重複が見つかった場合。次の反復を開始して新しい値リストをチェックします。 – TAA