gpt4 book ai didi

java - 返回错误的百分比

转载 作者:行者123 更新时间:2023-11-30 07:12:31 24 4
gpt4 key购买 nike

我正在尝试计算在给定组大小的情况下,组中的两个人有多少次生日相同的次数。我还知道模拟运行了多少次。我试图返回给定数量的模拟中两个人生日相同的次数的正确百分比。我首先创建了一个数组,然后调用一个方法将元素放入 hashMap 中,然后当 hashMap 中存在两个相同的值时,该方法就会显示。但是,在 Android Studio 上运行时我没有得到正确的百分比。事实上,我的成绩还差了一个百分点。我还在该 block 上方声明了一个 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;
}

最佳答案

好吧,你的代码充满了奇怪的东西,但没关系,我们都这样做了。第一个是Map,你不需要它。您可以创建良好的旧 for 循环,并通过额外检查,您不会比较同一个人(这是 i != j 条件),但如果您真的想要这样做通过映射,您需要在添加数字(作为键)到映射的末尾检查键的某些值是否大于 1,如果为 true,则表示匹配。

如何在循环结束时执行某些操作?

if(i == count){
percentage = (match * (100.0/i));
}

不,只需在循环后执行此操作:)

//At the beginning there is int match = 0;

public void sameDayBirthday(int[] birthdays) {
for(int i = 0; i < birthdays.length; i++) {
for(int j = 0; j < birthdays.length; j++) {
if(birthdays[i] == birthdays[j] && i != j) {
match++;
return;
}
}
}
}

public double calculate(int size, int count) {
int[] birthdays = new int[size];
Random r = new Random();

for(int i = 1; i <= count; i++){ //looping through i counts (or 20 counts in this case
for(int j = 0; j < size; j++){ //looping through j times every i iteration
birthdays[j] = r.nextInt(365) + 1;
}
sameDayBirthday(birthdays);
}
return (match * (100.0/(double) count));

}

这段代码通过调用 calculate(23, 1000000) 得到了 50.7685% 的机会,对于 22 个人来说是 47.48690%

如果我无意冒犯了你,我很抱歉。如果您有疑问,请发表评论。

关于java - 返回错误的百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38985806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com