2013-11-01 实验之足球比赛夺冠模拟(概率公平原理)
2013-11-01 21:24
357 查看
题目: 足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。
假设有甲、乙、丙、丁四个球队。根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表:
甲 乙 丙 丁
甲 - 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,...
现在要举行一次锦标赛。双方抽签,分两个组比,获胜的两个队再争夺冠军。(参见如下)
请你进行10万次模拟,计算出各队夺冠的概率。
思想:随机数的产生,概率公平原理,有随机数来模拟
应用程序:
假设有甲、乙、丙、丁四个球队。根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表:
甲 乙 丙 丁
甲 - 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,...
现在要举行一次锦标赛。双方抽签,分两个组比,获胜的两个队再争夺冠军。(参见如下)
请你进行10万次模拟,计算出各队夺冠的概率。
思想:随机数的产生,概率公平原理,有随机数来模拟
应用程序:
#include<stdlib.h> #include<stdio.h> float teamCrown[4][4] = { {0, 0.1, 0.3, 0.5}, {0.9, 0, 0.7, 0.4 }, {0.7, 0.3, 0, 0.2}, {0.5, 0.6, 0.8,0}}; int counts[4]; int rand_3() { //srand(time(0)); //return rand()%7+1; struct timeval tpstart; gettimeofday(&tpstart,NULL); srand(tpstart.tv_usec); return 1+(int) (3.0 * rand()/(RAND_MAX+1.0)); } int rand_10() { struct timeval tpstart; gettimeofday(&tpstart,NULL); srand(tpstart.tv_usec); return 1+(int) (10.0 * rand()/(RAND_MAX+1.0)); } int rand_XY(float x) { //printf(" value: %f\n", x); //printf(" value: %d\n", rand_10()); int value = rand_10(); if(value <= x) { // printf("i win\n"); return 1; }else{ // printf("j win\n"); return 0; } } int do_win_or_lose(int i, int j) { float prob = teamCrown[i][j]; if(rand_XY(prob * 10) > 0){ return i; }else{ return j; } } void choose_win() { int oppont = rand_3(); int win; int i, j; //printf("Opponet: %d\n", oppont); if(oppont == 1){ i = do_win_or_lose(0, 1); j = do_win_or_lose(2, 3); }else if(oppont == 2){ i = do_win_or_lose(0, 2); j = do_win_or_lose(1, 3); }else if(oppont == 3){ i = do_win_or_lose(0, 3); j = do_win_or_lose(1, 2); } //printf("team i j: %d, %d\n", i, j); counts[do_win_or_lose(i, j)]++; } int main(void) { int i; int count = 100000; for(i = 0; i < count; i++) { choose_win(); } for(i = 0; i < 4; i++) { printf("Team %d win probliabity: %d, %f%\n", (i + 1), counts[i], (float)counts[i]/count * 100); } return 0; }
相关文章推荐
- 2013-11-01 实验之古代赌局玩家押注(概率公平原理)
- 2013-10-16 实验之随机数公平产生(概率公平原理)
- 夺冠概率 足球比赛具有一定程度的偶然性,弱队也有战胜强队的可能。 假设有甲、乙、丙、丁四个球队。根据他们过去比赛的成绩,得出每个队与另一个队对阵时取胜的概率表:
- 编译原理实验之用C模拟C++虚方法表机制
- 蓝桥杯-夺冠概率模拟(取随机数)
- python模拟多次采样通过低概率事件多次重复实验趋近必然事件
- 计算机组成原理实验之模拟整机实验考核试题
- 算法笔记_224:夺冠概率模拟(Java)
- 详解抓取网站,模拟登陆,抓取动态网页的原理和实现
- 一个自带简易数据集的模拟线性分类器matlab代码——实验训练
- [操作系统]实验三 进程调度模拟程序
- 夺冠概率
- 操作系统 模拟可变分区内存管理实验 C语言描述
- 宁波市第31届中小学程序设计比赛模拟试题 chicken
- 编译原理实验4——LL(1)文法分析
- 实验三、进程调度模拟程序实验
- 模拟光照中的凹凸纹理原理和应用
- 实验三 进程调度模拟程序
- 实验三、进程调度模拟程序实验
- 组播RPF 逆向路径转发 实验原理