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

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

甲 乙 丙 丁
甲 - 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类库)。


  概率题

  手工计算概率,思路是用 甲夺冠的事件总数 / 100000,因为比赛的结果是随机的,所以要用到随机函数rand()产生随机数模拟比赛的结果。如果2场比赛甲都胜利了,那么甲夺冠事件总数 num+1,最后用 num / 100000.0 即可。

  解答:0.07679

 #include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
bool p[][] =
{{,,,,,,,,,}
,{,,,,,,,,,}
,{,,,,,,,,,}};
int main()
{
srand(time(NULL));
int num = ;
for(int i=;i<=;i++){
int t = rand()%; //第一轮和哪个队比
int tt = rand()%; //获胜
if(p[t][tt]){ //第一轮赢了
int t2 = rand()%; //第二轮和那个队比
while(t==t2)
t2 = rand()%;
tt = rand()%;
if(p[t2][tt])
num++;
}
}
cout<<num/100000.0<<endl;
return ;
}

Freecode : www.cnblogs.com/yym2013

最新文章

  1. 【.net 深呼吸】EqualityComparer——自定义相等比较
  2. &lt;十五&gt;JDBC_使用 DBUtils 进行更新、查询操作
  3. fedora 24 使用扇贝网页版没有声音
  4. Spring boot 基于Spring MVC的Web应用和REST服务开发
  5. WebService是什么?
  6. hdu 4927 java求组合数(大数)
  7. Oracle主键自动生成_表and存储过程
  8. VSCode 同步设置及扩展插件 实现设备上设置统一
  9. Java8之Lambda表达式基础
  10. linux overcommit flag
  11. docker 中运行 mysql
  12. 解决object at 0x01DB75F0
  13. CentOS6.6 双网卡双网关配置
  14. require的定义看不懂【2】
  15. this绑定丢失的问题
  16. Django设置联合唯一约束 -- migrate时报错处理
  17. 必须掌握的30种SQL语句优化
  18. [py]flask动态展示主机内存图
  19. Python Django Ajax 传递列表数据
  20. getline

热门文章

  1. 移动端(阿里rem)布局
  2. mui webview操作
  3. onWindowFocusChanged重要作用(得到/失去焦点call) 、
  4. JavaWeb 发送post请求的2种方式(form、json)
  5. hibernate 一对多双向
  6. Apache服务器配置https协议/SSL证书的方法
  7. linux安装php sphinx出错
  8. ASP.NET 推荐书籍
  9. Docker构建nginx的nginx-rtmp-module视频服务器镜像
  10. unity3d常用控件