前几天刷视频看见了这个,虽然这个是个“悖论”,但这个其实是个概率问题,只是有点让人难以理解罢了。刚开始我也有点被迷惑了,于是决定拾起丢下多年的C语言,编写了一个小程序,或不多说,代码见下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| ``` #include <stdio.h> #include <stdlib.h> #include <time.h>
int main (){ srand(time(0)); int door1=0; int door2=1;
int door3=0; int win=1; int fstt=0; int scndt=0; int hc=0; int fstt1=0; int scndt1=0; int hc1=0; int i=1; for(i;i<=100000;i++) { int num= rand() % 3 + 1; int rdm= rand() % 2 + 1; switch (num) { case 1 : win=0; scndt++; if(rdm==1) hc++; break; case 2 : win=1; fstt++; if(rdm==2) hc++; break; case 3 : win=0; scndt++; if(rdm==1) hc++; break; default : break; }
} fstt1=fstt/1000; scndt1=scndt/1000; hc1=hc/1000; printf("总的中奖率为:%d%%。\n",fstt1); printf("开了一扇门后直接转换选择后的中奖率为:%d%%。\n",scndt1); printf("开了一扇门后随机转换选择后的中奖率为:%d%%。\n",hc1); return 0; } ```
|
运行结果见下图