• 三门问题 代码验证概率


    方案一:

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #define TIMES 10000000 //实验越多,频率就接近于概率
    7. int main()
    8. {
    9. long long change=0,unchange=0,i;
    10. int car, choice;
    11. for (i=1; i< TIMES ;i++)
    12. {
    13. car = 1 + rand() % 3; //奖品位置随机
    14. choice = 1 + rand() % 3; //人为选择随机
    15. if (car == choice)
    16. unchange++; //第一次选择就中奖且没有换门的情况
    17. else
    18. change++; //其他情况:就是不确定第一次是否中奖,选择换门
    19. }
    20. printf("没有换门:中奖次数为:%d次\n",unchange);
    21. printf("中奖率为:%f\n",1.0*unchange/TIMES);
    22. printf("换门后:中奖次数为:%d次\n",change);
    23. printf("中奖率为:%f",1.0*change/TIMES);
    24. return 0;
    25. }

    运行结果:

    方案二:

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. bool xuanze(bool change);
    7. void fun(int n,bool change);
    8. void fun(int n,bool change)
    9. {
    10. int wins=0;
    11. for(int i=0;i
    12. {
    13. if(xuanze(change))
    14. wins++;
    15. }
    16. printf("中奖次数为:%d次\n",wins);
    17. printf("中奖率为:%f\n",1.0*wins/n);
    18. }
    19. bool xuanze(bool change)
    20. {
    21. //srand(time(0));
    22. //sleep(2);
    23. int n1=rand()%3+1;
    24. //sleep(2);
    25. int n2=rand()%3+1;
    26. if(n1 != n2)
    27. return change ? true:false;
    28. else
    29. return change ? false:true;
    30. }
    31. int main()
    32. {
    33. int num=0;
    34. printf("请输入本次实验次数\n");
    35. scanf("%d",&num);
    36. printf("不换门:");
    37. fun(num,false);
    38. printf("换门:");
    39. fun(num,true);
    40. return 0;
    41. }

    运行结果:

  • 相关阅读:
    13. Python数据类型之布尔类型
    Vue中实现清空数组和清空el-table
    Android 每日答题
    easyexcel升级3.3.4失败的经历
    还记得这首是什么歌吗?
    大数据采集工具Flume
    链表OJ题+牛客题
    Tarjan 求有向图的强连通分量
    我使用Spring AOP实现了用户操作日志功能
    mysql 数据库迁移
  • 原文地址:https://blog.csdn.net/weixin_46094737/article/details/126814661