9.夺冠概率

来源:互联网 发布:jquerymin源码怎么看 编辑:程序博客网 时间:2024/04/30 19:14

足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。
假设有甲、乙、丙、丁四个球队。根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表:

    甲  乙  丙  丁  
甲   -  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万次模拟,计算出甲队夺冠的概率。

#include<iostream> #include<cstdlib>  using namespace std;   int table[4][4] =   {      {0, 1, 3, 5},      {9, 0, 7, 4},      {7, 3, 0, 2},      {5, 6, 8, 0}  };    void main()  {       int t = 100000;      int c = 0;                //A组获胜次数    for(int i=0;i<t;i++)      {          int p = rand()%3+1;  //摇到?队伍        int w = rand()%10;   //        if(w >= table[0][p])  //A队输            continue;  //小组赛赢了        if(p==1)        //小组赛摇到B队        {              w = rand()%10;              if(w >= table[2][3])  //判断小组赛C,D哪组胜                p = 3;              else                  p = 2;          }          else if(p==2)          {              w = rand()%10;              if(w >= table[1][3])                  p = 3;              else                  p = 1;          }          else          {              w = rand()%10;              if(w >= table[1][2])                  p = 2;              else                  p = 1;          }          w = rand()%10;          if(w >= table[0][p])              continue;          c++;      }      cout << "Possiblity: " << 1.0*c/t << endl;  }