题目 足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。假设有甲、乙、丙、丁四个球队,根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表: 甲 乙 丙 丁 甲 - 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,…。现在要举行一次锦标赛,双方抽签,分两个组比,获胜的两个队再争夺冠军(参见下图)。
#include<bits/stdc++.h>
using namespace std;
int main()
{
double ab_cd = 0.1*0.2*0.3+0.1*0.8*0.5; // ab_cd 代表 (a vs b)a (a vs c)+(a vs d)=a的概率
double ac_bd = 0.3*0.4*0.1+0.3*0.6*0.5; // ac_bd 代表 (a vs c)a (a vs b)+(a vs d)=a的概率
double ad_bc = 0.5*0.7*0.1+0.5*0.3*0.3; // ad_bc 代表 (a vs d)a (a vs b)+(a vs c)=a的概率
double sum = 0; // 总计
int n = 100000; // 循环次数
for(int i=0;i<n;i++){ // 10万次模拟
int r = rand()%3;
switch(r)
{
case 0: sum += ab_cd; break;
case 1: sum += ac_bd; break;
case 2: sum += ad_bc; break;
}
}
cout<< sum/n;
return 0;
}