您的位置:首页 > 编程语言 > C语言/C++

2013蓝桥杯 CC++程序设计本科A组 夺冠概率

2014-10-17 00:00 281 查看
足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。

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

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

注意:

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

在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。

请把所有函数写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

源代码中不能能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。

允许使用STL类库,但不能使用MFC或ATL等非ANSI c++标准的类库。例如,不能使用CString类型(属于MFC类库)。


#include <iostream>
#include <stdlib.h> /*用到了srand函数,所以要有这个头文件*/
using namespace std;

//1 + 1
//......
//  2
//C
//  4
int main()
{
srand(time(NULL));//种子为系统时间
int s = 0;
int sum = 0;
int t;
while(s <= 1e5)//十万次模拟
{
t = rand() % 3;
if(t == 0)//a & b
{
t = rand() % 10;
if(t == 0)//a win b
{
t = rand() % 10;
if(t >= 3)//c win d
{
t = rand() % 10;
if(t <= 2)// a win c
sum ++;
}
else// d win c
{
t = rand() % 10;
if(t <= 4)// a win d
sum++;
}
}
}
else if(t == 1)//a & c
{
t = rand() % 10;
if(t <= 2) // a win c
{
t = rand()% 10;
if(t <= 3) // b win d
{
t = rand()% 10;
if(t == 0)//a win b
sum ++;
}
else//d win b
{
t = rand() % 10;
if(t <= 4 )//a win d
sum ++;
}
}
}
else
{
t = rand()%10;
if(t <= 4)//a win d
{
t = rand() % 10;
if(t >= 3)//b win c
{
t = rand() % 10;
if(t == 0)// a win b
sum++;
}
else // c win b
{
t = rand() % 10;
if(t <= 2) // a win c
sum++;

}
}
}
s++;
}
double result = sum / 1e5;
cout << result << endl;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: