夺冠概率


    足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。

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

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


    注意:

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

------------------------------------------------------------------------------------------------------
分析:

甲胜乙,丙,丁的概率分别是p12,p13,p14
乙胜丙丁的概率分别是p23,p24
丙胜丁的概率是p34

假如,甲乙一组,丙丁一组。那么甲的夺冠概率是多少呢?

甲要夺冠必须要干掉乙,干掉乙的概率是p12。此时甲还要干掉丙或者丁才能夺冠。

甲和丙比的概率是:p12*丙把丁干掉的概率=p12*p34       

夺冠的胜率是p12*p34*p13

甲和丁比的概率是:p12*丁把丙干掉的概率=p12*(1-p34)  

夺冠的胜率是p12*(1-p34)*p14

综合:P=p12*p34*p13+p12*(1-p34)*p14

同理可得,

甲丙一组,甲夺冠的概率P=p13*(p24*p12+(1-p24)*p14);

甲丁一组,甲夺冠的概率P=p14*(p23*p12+(1-p23)*p13);

 1 #include <stdlib.h>
 2 #include <stdio.h>
 3 #include <time.h>
 4 #define N 100000
 5 double p12=0.1,p13=0.3,p14=0.5;//甲胜乙,丙,丁 
 6 double p23=0.7,p24=0.4;//乙胜丙,丁 
 7 double p34=0.2;//丙胜丁
 8 double p[3]; 
 9 int main()
10 {
11     double sum = 0.0;
12     p[0]=p12*(p34*p13+(1-p34)*p14);//甲乙一组 
13     p[1]=p13*(p24*p12+(1-p24)*p14);//甲丙一组 
14     p[2]=p14*(p23*p12+(1-p23)*p13);//甲丁一组 
15     srand((unsigned)time(NULL));//初始化随机数 
16     for (int k = 1; k <= N; k++ )
17         sum+=p[rand()%3];
18     printf("%.3lf\n", sum/N);
19     system("pause");
20     return 0;
21 
22 }

 

 

 

posted @ 2013-05-04 19:05  Please Call me 小强  阅读(330)  评论(0编辑  收藏  举报