1 Star 0 Fork 0

wzx046/三门问题

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
源.cpp 1.34 KB
一键复制 编辑 原始数据 按行查看 历史
wzx046 提交于 2021-12-22 23:22 . 添加项目文件。
#include<stdio.h>
#include<random>
#define times 10000000 /*测试次数*/
int prize[3] = { 0 };
int MyChoose;/*第一次选择*/
int noCarDoor;/*第一次没车的门*/
int Final_Choose;/*改变后的选择*/
void LoadCar()/*选定一扇门后有车*/
{
for (int i = 0; i < 3; i++)/*清零*/
{
prize[i] = 0;
}
int car;
car = rand() % 3;
prize[car] = 1;
}
void choose()/*观众选择一扇门*/
{
MyChoose = rand() % 3;
}
void First_openDoor()/*打开没车的门*/
{
for (int i = 0; i < 3; i++)
{
if (i == MyChoose)continue;
if (prize[i] == 0)
{
noCarDoor = i;
break;
}
}
}
void ChangeDoor()/*改变选择*/
{
Final_Choose = 3 - MyChoose - noCarDoor;
}
int main()
{
float probability_c, probability_n;/*换门获胜概率与不换获胜概率*/
int changenum = 0;/*换门获胜次数*/
int nochangenum = 0;/*不换门获胜次数*/
for (int j = 0; j < times; j++)
{
LoadCar();
choose();
First_openDoor();
ChangeDoor();
if (prize[Final_Choose] == 1)
changenum++;
}
for (int j = 0; j < times; j++)
{
LoadCar();
choose();
First_openDoor();
ChangeDoor();
if (prize[MyChoose] == 1)
nochangenum++;
}
probability_c = (float)changenum / times;
probability_n = (float)nochangenum / times;
printf("测试次数:%d\n", times);
printf("换门获胜次数:%d 获胜概率:%f\n", changenum, probability_c);
printf("不换门获胜次数:%d 获胜概率:%f", nochangenum, probability_n);
return 0;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/wzx046/three-door-problem.git
git@gitee.com:wzx046/three-door-problem.git
wzx046
three-door-problem
三门问题
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385