public class ThreeGatesExperiment {private int N;// 构造函数public ThreeGatesExperiment(int N){if(N <= 0)throw new IllegalArgumentException("N must be larger than 0!");this.N = N;}/*** @param changeDoor 是否换门*/public void run(boolean changeDoor){int wins = 0;for(int i = 0 ; i < N ; i ++)if(play(changeDoor))wins ++;System.out.println(changeDoor ? "Change" : "Not Change");System.out.println("winning rate: " + (double)wins/N);}/*** @param changeDoor 是否换门*/private boolean play(boolean changeDoor){//        double random=Math.random();//返回[0,1)随机数
//        (int)(Math.random()*6)//返回0-5;随机数
//        (int)(Math.random()*6+1)//返回1-6,随机骰子// Door 0, 1, 2int prizeDoor = (int)(Math.random() * 3);int playerChoice = (int)(Math.random() * 3);if( playerChoice == prizeDoor)return changeDoor ? false : true;elsereturn changeDoor ? true : false;}public static void main(String[] args) {// 模拟100万次int N = 10000000;ThreeGatesExperiment exp = new ThreeGatesExperiment(N);exp.run(true);System.out.println();exp.run(false);}
}



Python实现

from random import random
class ThreeGatesExperiment():def __init__(self, N):assert N>=0, "N must be larger than 0!"self.N = N;def _play(self, changeDoor):prizeDoor = (int)(random() * 3)playerChoice = (int)(random() * 3)if(playerChoice == prizeDoor):return False if changeDoor else True;else:return True if changeDoor else False;def run(self, changeDoor):wins = 0for i in range(N):if self._play(changeDoor):wins += 1print("Change" if changeDoor else "Not Change")print("winning rate: " , wins/N)
# 模拟100万次
N = 10000000
exp = ThreeGatesExperiment(N);
exp.run(True);
print()
exp.run(False);

使用蒙特卡洛思想解决三门问题(Java和Python实现)相关推荐

  1. Java使用动态规划算法思想解决01背包问题

    Java使用动态规划算法思想解决背包问题 背包问题是一种组合优化的NP完全问题.问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高 动 ...

  2. 动态规划算法思想解决找零钱问题

    前言 关于找零钱问题,网上已经有很多相关的资料以及优秀的文章博客等.这里写这篇博客的初衷很简单,就是为了方便自己,回过头来捡起这个知识能快一点,接受起来更易理解点:他人的文章写的再好,毕竟是别人的,学 ...

  3. 解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题

    解决Spring的java项目打包后执行出现"无法读取方案文档..."."原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是..."问题 ...

  4. 运用贪心思想解决跳跃游戏

    运用贪心思想解决跳跃游戏 文章目录 运用贪心思想解决跳跃游戏 Jump Game I 1.题目描述 2.分析 3.代码 Jump Game II 1.问题描述 2.分析 3.动规代码[超时] 4.贪心 ...

  5. java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...

    常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...

  6. 蒙特卡洛能解决啥_用蒙特卡洛方法解决“无法解决”的问题

    蒙特卡洛能解决啥 How do you solve an 'unsolvable' problem? 您如何解决"无法解决"的问题? The worlds of data scie ...

  7. java语言就业方向_四大就业方向彻底解决你学习Java语言编程的后顾之忧-生活感悟与随笔 -亦是美网络...

    前面的文章中已经给大家介绍了关于Java编程语言的优势.特点以及就业前景等内容,大家之所以这么热衷于Java编程学习,不仅是因为Java是编程市场上最为广泛流行的语言,大家更关心的是学习了Java编程 ...

  8. Python机器学习:SVM008SVM思想解决回归问题

    怎么定义拟合 比如线性,MSE值最小 SVM margin包含样本数量越多越好~ 取中间的直线为结果 引入超参数ε #SVM思想解决回归问题 import numpy as np import mat ...

  9. java编程思想怎么样_读完java编程思想后的思考?

    谢邀,这本书真的给我带来很多思考. 我的java入门不是java编程思想,学校的教材是一本紫色的书,已经忘了叫什么名字了,里面内容倒挺新还讲了些javafx.但那本书实在是太浅并且结构混乱,以至于我和 ...

最新文章

  1. AI:2020年6月16日晚20点陆奇博士演讲《陆奇直播万字实录:正视挑战,把握创业创新机会》
  2. MVC与三层架构的区别
  3. linux服务器安装php7_CentOS 7 下 PHP 7.1.12 安装配置
  4. open3d连续读取pcd文件及实现点云视角转换
  5. 对sppnet网络的理解
  6. 文件图片随机划分训练集和验证集
  7. 省级面板数据(1990-2019):能源消费(煤炭、焦炭、石油、原油等)excel或stata版本
  8. python3中字符编码转换
  9. matlab在mac中好用吗,Matlab Mac版上手
  10. matlab安装matconvnet
  11. linux内核溢出利用,窖藏15年新鲜出炉的Linux内核漏洞
  12. 小白基础知识必备|| 整型常量与进制间的转换
  13. 我男朋友是产品经理......
  14. 最近工作用到的sql脚本
  15. yarn中资源调度fair schedule详解
  16. Cortex-A 系列处理器
  17. 一零二一、ERROR StandaloneSchedulerBackend: Application has been killed. Reason: All masters are unrespon
  18. 人人都在用的机器学习算法-决策树
  19. java百钱百鸡算法
  20. 安卓 jni 开发之 native 方法的动态注册

热门文章

  1. 中国移动规范学习——4A技术要求(账号管理)
  2. DM7数据库DMAP服务异常,报错“ dmap init failed, code[-7157]: 管道文件已存在”
  3. 祝福语大全 计算机,【一到十的祝福语】 从一到十的祝福语_一到十祝福语大全_东城教研...
  4. iOS关于时间的处理
  5. kafka命令行使用
  6. [JVM]了断局: Class文件结构梳理
  7. Unity3D 里IK手柄的用运
  8. linux 移动某个文件夹及其所有子文件夹内指定类型的文件
  9. WordPress获取文章缩略图函数:get_the_post_thumbnail
  10. 安卓车机能升级鸿蒙吗,华为鸿蒙系统能否应用到车机系统