有一个囚犯,国王打算处决他,但仁慈的国王给了他一个生还的机会。现在摆在他面前有两个瓶子,一个里面装了50个白球,一个装了50个黑球,这个囚犯有一个机会可以随便怎样重新分配这些球到两个瓶子中(当然,要保证不空),分配完了之后囚犯被蒙上眼睛,国王随机取一个瓶子给他,他在里面摸出一个球(因为蒙着眼睛,所以也是随机抽取),如果白球,则活,否则挂掉。问,这个囚犯如何分配,才能最大化生还几率。

答案当然谁都能猜到,就是只把一个白球放过去。我编了个循环试了试。遇到问题如下:

我假定一个瓶子中球总数为:zongshu,白球数为baiqiu,囚犯活下来的概率为rate。循环如下:

for( zongshu=1; zongshu<100; zongshu++){
  for(baiqiu=0;(baiqiu<=zongshu)&&(baiqiu<=50); baiqiu++){
   temprate=(double)baiqiu*0.5/(double)zongshu+(double)(50-baiqiu)*0.5/(double)(100-zongshu);
   if(temprate>rate) {
    rate=temprate;
    b= baiqiu;
    z= zongshu;

}

else continue;

}

continue;

}

这个循环是错误的,程序结果有问题,居然能把rate算到大于1。百思不得其解。而后我改了一下试试。定义了基于heiqiu和baiqiu的循环如下:

for(heiqiu=0;heiqiu<=50;heiqiu++){
  for(baiqiu=1;baiqiu<=50;baiqiu++){
   int zongshu=heiqiu+baiqiu;
   temprate=(double)baiqiu*0.5/(double)zongshu+(double)(50-baiqiu)*0.5/(double)(100-zongshu);
   if(temprate>rate) {
    rate=temprate;
    b= baiqiu;
    z= heiqiu+baiqiu;
   }
   else continue;
  }
  continue;
 }

结果正确。大家知道这是为什么么?

想到问题所在了吧?但是如果重写循环你是很难发现这个错误的,所以在定义循环时你一定要注意循环是否考虑完全。避免犯这样的错误。

一程序中的错误为:限制白球小于50,没有限制黑球(zongshu-baiqiu)小于50

转载于:https://www.cnblogs.com/hold/archive/2010/04/27/2286807.html

囚犯生存概率引发的循环思考相关推荐

  1. 一个关于概率的问题的思考

      最近需要给公司内部编写一个随机生成人员名单的小工具,在解决这个问题的过程中,我认识到这是一个概率相关的问题,即使在过去我曾经设计过类似转盘抽奖这样的应用程序,可我并不认为我真正搞清楚了这个问题,所 ...

  2. GitChat 被恶意攻击引发的技术性思考:拒绝服务攻击

    本文来自作者 肖志华 在 GitChat 上分享 「GitChat 被恶意攻击引发的技术性思考:拒绝服务攻击」,「阅读原文」查看交流实录. 「文末高能」 编辑 | 哈比 拒绝服务的类型很多,挑几个有特 ...

  3. sklearn 相关性分析_用sklearn机器学习预测泰坦尼克号生存概率

    前言 本文为练手记录,适用于刚入门的朋友参照阅读练习,大神请绕道,谢谢! 阅读大约需要10分钟. 一.理解项目概况并提出问题 1.1 登陆官网查看项目概况 Titanic: Machine Learn ...

  4. Bob 的生存概率问题

    Bob 的生存概率问题 作者:Grey 原文地址: 博客园:Bob 的生存概率问题 CSDN:Bob 的生存概率问题 题目描述 给定五个参数 n , m , i , j , k,表示在一个 n*m 的 ...

  5. tensorflow2.0——预测泰坦尼克号旅客生存概率(Keras应用实践)

    一.数据准备 1.导入相关的库 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import pa ...

  6. 使用统计学分析《鱿鱼游戏》中“玻璃垫脚石”的生存概率

    如果你要在鱿鱼游戏中玩玻璃垫脚石,你的会选择那个数字? <鱿鱼游戏>是最近很火的电影,在阅读本篇文章之前,我假设你已经看过这部剧集了.比赛中需要使用不同的策略才能获胜,比如第7集中的&qu ...

  7. NSObject到底多么大引发的一些思考

    NSObject到底多么大引发的一些思考 本文引用及参考文献,感谢一下博主的分享: C++ 内存对齐-by enos 小码哥iOS学习笔记第一天: Objective-C的本质-by 冰凌天 Obje ...

  8. 关于“找老婆”问题引发的深入思考

    浅谈"数学家.理论计算机科学家.工程师的区别" 关于"找老婆"问题引发的深入思考 有一天,三个朋友一起去吃烧烤.他们分别是数学家,理论计算机科学家,计算机工程师 ...

  9. 一个线程池 bug 引发的 GC 思考!

    问题描述 前几天在帮同事排查生产一个线上偶发的线程池错误,逻辑很简单,线程池执行了一个带结果的异步任务. 但是最近有偶发的报错: java.util.concurrent.RejectedExecut ...

最新文章

  1. ACM小白入门之必须要了解的东西
  2. 神经网络与机器学习 笔记—多层感知器(MLP)
  3. 使用nodejs代码在SAP C4C里创建Individual customer
  4. java 任意数平均值_【编程题】通过键盘输入三个任意的数字,计算三个值的平均值,并输出结果。...
  5. Android 开发环境在 Windows7 下的部署安装
  6. gradle引入子module配置_原创 | 看完此文,你对Gradle的理解又升级了
  7. 改良版class选择器
  8. linux下nginx404,linux+nginx下的404可能错误
  9. javascript 自动化单元测试
  10. 【炼丹技巧】惊了,掌握了这个炼丹技巧的我开始突飞猛进
  11. Django url() 函数详解
  12. C#技术分享【PDF转换成图片——10种方案】(2013-07-25重新整理)
  13. 汇编语言---80386寄存器,GCC内联汇编语法
  14. 3993: [SDOI2015]星际战争
  15. ipv4地址怎么设置 手机_手机ip地址怎么设置 手机WIFI静态IP设置方法
  16. 阿里云网盘内测申请_33期——阿里云网盘之内测申请(一)
  17. SpringBoot项目在使用Maven打包war中遇到的问题
  18. ubc本科计算机雅思要求,加拿大各大学的雅思要求
  19. 输入股票代码判断深市还是沪市,python
  20. rust门卡有什么用_屠龙之技! 使用Rust加速你的Python

热门文章

  1. 如何修改移动设备按钮默认样式
  2. Lesson 1:单线程 Socket Communications(一)
  3. 有关OCS监控软件安装在windows上, 服务端显示乱码的问题
  4. Struts2+Spring+Hibernate环境搭建
  5. linux运维决心书!
  6. linux 文件权限后面一个点的含义
  7. 大三时候实现的,关于大整数(超过long范围)加减乘除操作的头文件,并包含了实现RSA加解密的函数...
  8. html向后端发送请求
  9. nltk.download(“stopwords“)
  10. pycharm的updating indices