使用蒙特卡洛思想解决三门问题(Java和Python实现)
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实现)相关推荐
- Java使用动态规划算法思想解决01背包问题
Java使用动态规划算法思想解决背包问题 背包问题是一种组合优化的NP完全问题.问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高 动 ...
- 动态规划算法思想解决找零钱问题
前言 关于找零钱问题,网上已经有很多相关的资料以及优秀的文章博客等.这里写这篇博客的初衷很简单,就是为了方便自己,回过头来捡起这个知识能快一点,接受起来更易理解点:他人的文章写的再好,毕竟是别人的,学 ...
- 解决Spring的java项目打包后执行出现“无法读取方案文档...“、“原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是...”问题
解决Spring的java项目打包后执行出现"无法读取方案文档..."."原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是..."问题 ...
- 运用贪心思想解决跳跃游戏
运用贪心思想解决跳跃游戏 文章目录 运用贪心思想解决跳跃游戏 Jump Game I 1.题目描述 2.分析 3.代码 Jump Game II 1.问题描述 2.分析 3.动规代码[超时] 4.贪心 ...
- java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...
常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...
- 蒙特卡洛能解决啥_用蒙特卡洛方法解决“无法解决”的问题
蒙特卡洛能解决啥 How do you solve an 'unsolvable' problem? 您如何解决"无法解决"的问题? The worlds of data scie ...
- java语言就业方向_四大就业方向彻底解决你学习Java语言编程的后顾之忧-生活感悟与随笔
-亦是美网络...
前面的文章中已经给大家介绍了关于Java编程语言的优势.特点以及就业前景等内容,大家之所以这么热衷于Java编程学习,不仅是因为Java是编程市场上最为广泛流行的语言,大家更关心的是学习了Java编程 ...
- Python机器学习:SVM008SVM思想解决回归问题
怎么定义拟合 比如线性,MSE值最小 SVM margin包含样本数量越多越好~ 取中间的直线为结果 引入超参数ε #SVM思想解决回归问题 import numpy as np import mat ...
- java编程思想怎么样_读完java编程思想后的思考?
谢邀,这本书真的给我带来很多思考. 我的java入门不是java编程思想,学校的教材是一本紫色的书,已经忘了叫什么名字了,里面内容倒挺新还讲了些javafx.但那本书实在是太浅并且结构混乱,以至于我和 ...
最新文章
- AI:2020年6月16日晚20点陆奇博士演讲《陆奇直播万字实录:正视挑战,把握创业创新机会》
- MVC与三层架构的区别
- linux服务器安装php7_CentOS 7 下 PHP 7.1.12 安装配置
- open3d连续读取pcd文件及实现点云视角转换
- 对sppnet网络的理解
- 文件图片随机划分训练集和验证集
- 省级面板数据(1990-2019):能源消费(煤炭、焦炭、石油、原油等)excel或stata版本
- python3中字符编码转换
- matlab在mac中好用吗,Matlab Mac版上手
- matlab安装matconvnet
- linux内核溢出利用,窖藏15年新鲜出炉的Linux内核漏洞
- 小白基础知识必备|| 整型常量与进制间的转换
- 我男朋友是产品经理......
- 最近工作用到的sql脚本
- yarn中资源调度fair schedule详解
- Cortex-A 系列处理器
- 一零二一、ERROR StandaloneSchedulerBackend: Application has been killed. Reason: All masters are unrespon
- 人人都在用的机器学习算法-决策树
- java百钱百鸡算法
- 安卓 jni 开发之 native 方法的动态注册
热门文章
- 中国移动规范学习——4A技术要求(账号管理)
- DM7数据库DMAP服务异常,报错“ dmap init failed, code[-7157]: 管道文件已存在”
- 祝福语大全 计算机,【一到十的祝福语】 从一到十的祝福语_一到十祝福语大全_东城教研...
- iOS关于时间的处理
- kafka命令行使用
- [JVM]了断局: Class文件结构梳理
- Unity3D 里IK手柄的用运
- linux 移动某个文件夹及其所有子文件夹内指定类型的文件
- WordPress获取文章缩略图函数:get_the_post_thumbnail
- 安卓车机能升级鸿蒙吗,华为鸿蒙系统能否应用到车机系统