Java实现夺冠概率模拟
2024-10-09 06:22:19
足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。
假设有甲、乙、丙、丁四个球队。根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表:
甲 乙 丙 丁
甲 - 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万次模拟,计算出甲队夺冠的概率。
注意:
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
public class Main {
public static void main(String[] args) {
double[][] value = {{0, 0.1, 0.3, 0.5},
{0.9, 0, 0.7, 0.4},
{0.7, 0.3, 0, 0.2},
{0.5, 0.6, 0.8, 0}};
double[] result = new double[100000];
double sum = 0;
for(int i = 0;i < 100000;i++) {
int a = (int) (Math.random() * 3) + 1; //甲的对手
if(a == 1)
result[i] = value[0][1] * value[2][3] * value[0][2] +
value[0][1] * value[3][2] * value[0][3];
else if(a == 2)
result[i] = value[0][2] * value[1][3] * value[0][1] +
value[0][2] * value[3][1] * value[0][3];
else
result[i] = value[0][3] * value[1][2] * value[0][1] +
value[0][3] * value[2][1] * value[0][2];
sum = sum + result[i];
}
sum = sum / 100000;
System.out.printf("%.3f", sum);
}
}
运行结果:
0.076
最新文章
- JavaScript将字符串中的每一个单词的第一个字母变为大写其余均为小写
- linux进程
- 【asp.net】Linux 部署 asp.net core 项目
- 配置ngnix
- PHP的版本选择 (转)
- SpringMVC使用@PathVariable,@RequestBody,@ResponseBody,@RequestParam,@InitBinder
- Dive into python 实例学python (1) —— 函数和测试
- Jsp实现form的file和text传递(multipart/form-data)
- 常用的js效验
- 斜率优化(CDQ分治,Splay平衡树):BZOJ 1492: [NOI2007]货币兑换Cash
- 编程器NAND Flash 技术入门
- db2安装要设置tcp、ip
- PAT (Advanced Level) 1069. The Black Hole of Numbers (20)
- vue指令v-else示例解析
- Spring Date Jpa on update current_timestamp 自动维护创建时间和更新时间
- python 3---if判断成绩练习
- 支付宝pc网页支付
- S0.0 计算机如何看东西
- Angular 个人深究(四)【生命周期钩子】
- C# 启动外部程序的几种常用方法汇总