グループのサイズが与えられたときに、グループ内の2人が同じ誕生日を持つ回数を計算しようとしています。私はまた、シミュレーションが何回実行されたかを教えています。私は、与えられた量のシミュレーションのうち、同じ誕生日を2人が共有している回数を正確に返そうとしています。 最初に配列を作成した後、メソッドを呼び出して要素をhashMapに入れ、hashMapに同じ値の2つがある場合に表示します。しかし、Android Studioで実行しているときに正しい割合を得られません。実際、私はパーセンテージ・オフになっています。また、このブロックの上にint型のグローバルスタティックマッチ変数を宣言しました。間違ったパーセンテージを返す
/**
* sameBday: Create a word count mapping from an array
*/
public void sameBday(int[] valueHolder) {
Map<Integer, Integer> myMap = new HashMap<Integer, Integer>();
for(int number: valueHolder){
if(!myMap.containsKey(number)){
myMap.put(number, 1);
}
else if(myMap.containsKey(number)){
myMap.put(number, myMap.get(number) + 1);
match++;
break;
}
}
}
public double calculate(int size, int count) {
double percentage = 0.0;
int[] myArray = new int[size];
for(int i = 1; i <= count; i++){
Random r = new Random(i);
for(int j = 0; j < size; j++){
myArray[j] = r.nextInt(365) + 1;
}
sameBday(myArray);
if(i == count){
percentage = (match * (100.0/i));
}
}
return percentage;
}
がよろしいのではない '割合は=(マッチ*(100.0 /(サイズ*数)))であり、' –
はなぜあなたが出て壊しています'sameBday'のループの? – copeg
私は2回のbdays(または同じ値のhashMapの値)を取得すると、hashMapの作成をやめ、calculateメソッドの次の繰り返しに移動したいので、ループを壊しています。 –