作业帮 > 综合 > 作业

java夺冠概率题 运行出结果与答案不一样

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/11 01:34:45
java夺冠概率题 运行出结果与答案不一样
    足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能.

    假设有甲、乙、丙、丁四个球队.根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表:

    甲  乙  丙  丁   
甲   -  0.1 0.3 0.5
乙 0.9  -   0.7 0.4 
丙 0.7  0.3 -   0.2
丁 0.5  0.6 0.8 -

    数据含义:甲对乙的取胜概率为0.1,丙对乙的胜率为0.3,...

    现在要举行一次锦标赛.双方抽签,分两个组比,获胜的两个队再争夺冠军.(参见【1.jpg】)

    请你进行10万次模拟,计算出甲队夺冠的概率.

    注意:

    请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
    



代码:
import java.util.*;
public class duoguan {

\x05public static void main(String[] args) {
double p =0.00;

\x05\x05for(int i=0;i<100000;i++){
\x05\x05\x05int a =(int) (Math.random()*2);
\x05\x05\x05int b =(int) (Math.random()*2);
\x05\x05\x05int c =(int) (Math.random()*2);
\x05\x05\x05int d =(int) (Math.random()*2);
\x05\x05\x05if(a+b+c+d!=2)
\x05\x05\x05\x05continue;
\x05\x05\x05if(a==b){
\x05\x05\x05\x05p+=0.1*(0.2*0.3+0.8*0.5);
\x05\x05\x05}
\x05\x05\x05if(a==c){
\x05\x05\x05\x05p+=0.3*(0.4*0.1+0.6*0.5);
\x05\x05\x05}
\x05\x05\x05if(a==d){
\x05\x05\x05\x05p+=0.5*(0.7*0.1+0.3*0.3);
\x05\x05\x05}\x05
\x05\x05
\x05\x05}
\x05\x05System.out.printf("%.4f",p/100000);
\x05}

}
输出结果为0.0286
075  
java夺冠概率题 运行出结果与答案不一样
public static void main(String[] args) {
double p = 0.00;
int count = 0;
for (int i = 0; i < 100000; i++) {
int a = (int) (Math.random() * 2);
int b = (int) (Math.random() * 2);
int c = (int) (Math.random() * 2);
int d = (int) (Math.random() * 2);
if (a + b + c + d != 2){
continue;
}else{
count ++;
}
if (a == b) {
//决赛a b相遇 : a战胜c同时b战胜d a战胜d同时b战胜c
p += (0.3*0.4+0.5*0.7)*0.1;
}
if (a == c) {
//决赛a c相遇 : a战胜b同时c战胜d a战胜d同时c战胜b
p += (0.1*0.2+0.5*0.3)*0.3;
}
if (a == d) {
//决赛a d相遇 : a战胜b同时d战胜c a战胜c同时d战胜b
p += (0.1*0.8+0.3*0.6)*0.5;
}
}
System.out.printf("%.4f", p / count);
}