Java 计算宝箱概率问题

有一种宝箱,打开这个宝箱就能获得金币大礼包的概率是20%,现在你打开5个这样的宝箱,获得礼包的概率是多少?

这是概率学中比较简单和经典的一个问题,答案并不是 5 x 0.2 =1 哦,现在来尝试使用java语言,通过蒙特卡罗方法随机模拟一百万次开宝箱,通过得到的中奖次数与进行模拟的次数相除得出结果把。

package 传奇宝箱问题;
import java学习.iterator接口;public class WinningPrize {private int N;//表示进行实验的次数
private int playTimes;//用来表示连续打开宝箱的个数
private double chance;//表示打开宝箱中奖的机率public WinningPrize(int N,int playTimes,double chance)
{if(chance<0.0||chance>1.0){//对参数进行检测throw new IllegalArgumentException("chance必须在0到1之间");  }if(N<0||playTimes<0){//对参数进行检测throw new IllegalArgumentException("playTimes和N必须大于0");}this.N=N;this.playTimes=playTimes;this.chance=chance;}
public void run()//运行实验
{int wins=0;//表示中奖次数for(int i=0;i<N;i++){if(play()){wins++;}}System.out.println("中奖的概率为"+(double)wins/N);
}
private boolean play()//模拟开宝箱
{for(int i=0;i<playTimes;i++ ){if(Math.random()<=chance){return true;//至少一次抽中了}}return false;//全部都没抽中}public static void main(String[] args) {int N=1000000;//进行一百万次实验int playTimes=5;//每次实验连开5次宝箱double chance=0.20;//打开一个宝箱中奖概率为百分之二十WinningPrize exp=new WinningPrize(N, playTimes, chance);exp.run();}}

最终运行结果为:

中奖的概率为0.671427

得出的结论连续开5次宝箱中奖的机率大概为2/3,当然如果连续开8次10次宝箱时中奖机率会更大。但是当宝箱的中奖概率不等于100%时,无论开多少个宝箱,最后中奖的概率都不会等于100%。

JAVA 计算宝箱概率问题相关推荐

  1. java计算筛子概率_剑指Offer解题报告(Java版)——n个骰子的点数 43

    问题 n个骰子朝上的数之和为s,求s的所有可能以及概率 分析问题 如果是用笨方法,一般人最开始都会想到笨方法,那就是枚举法 举个例子,比如两个骰子,第一个骰子的结果为1,2,3,4,5,6,两个骰子的 ...

  2. java计算筛子概率_使用excel计算骰子输赢概率

    如何得到使用3个骰子掷赢4个骰子的概率(每个骰子的点数为1-6,点数一样算输) 分为3步解决: 第一步.计算n个骰子得到m点数的分布 1个骰子能得到1.2.3.4.5.6点数,每个点数出现的方式只有1 ...

  3. java计算彩票概率_体彩“36选7”玩法:投注简单中奖概率高

    一提到体育彩票的500万元奖金,相信彩民首先想到的就是"七星彩". 确实本年度"七星彩"巨额的头奖是不断的开出,相对于它的"36先7"玩法出 ...

  4. 【项目实战】——Java根据奖品权重计算中奖概率实现抽奖(适用于砸金蛋、大转盘等抽奖活动)...

    Java根据奖品权重计算中奖概率实现抽奖http://www.bieryun.com/1035.html 双蛋节(圣诞+元旦)刚刚过去,前几天项目上线的砸金蛋活动也圆满结束. 现在在许多网站上都会有抽 ...

  5. java不确定人数扑克牌发牌技巧_汪峰被曝系德州扑克高手 善于计算发牌概率(图)...

    汪峰为了"上头条" 已经跳出娱乐圈,奔向体育圈! 4月14日,2015中国扑克锦标赛将在南京举办.据赛事主办方介绍,"摇滚歌手"汪峰确认将参加开幕式及冠军慈善赛 ...

  6. java中奖率算法_JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法

    本文主要介绍:使用 JS 根据奖品权重计算中奖概率实现抽奖的方法. 一.示例场景 1.1.设置抽奖活动的奖项名称 奖项名称:["一等奖", "二等奖", &qu ...

  7. Java计算两个字符串日期之间的天数差

    Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException {String a = & ...

  8. 炒股Java_基于java计算买卖股票的最佳时机

    这篇文章主要介绍了基于java计算买卖股票的最佳时机,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 问题: 可以将问题转化为如下图所示,即求多个累计 ...

  9. java中日期计算时间差,用java计算日期/时间差

    用java计算日期/时间差 我也想计算两个日期之间的差额以小时/分钟/秒为单位. 我的代码有一个小问题,就是:String dateStart = "11/03/14 09:29:58&qu ...

最新文章

  1. shell之常用脚本
  2. wxWidgets:构建wxWidgets程序的第一步
  3. 美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题
  4. Linux 配置文件
  5. ubuntu安装portainer_Docker【二】:Docker管理工具Portainer
  6. vts传感器采取船舶的_智慧船舶交通管理系统
  7. 移动端常用的四个框架
  8. 一个 bug ,罚款 200,我真待过这样的公司
  9. 基于概率的项目相似度之并行方法
  10. [读书笔记] - 《深度探索C++对象模型》第4章 Function语意学
  11. .net textbox全屏后自适应变大_手机屏幕太小?无套路不花钱变大屏!
  12. N1网络命令-ping
  13. 使用postman下载文件
  14. 灵活就业人员压力好大,不知道该不该继续交社保?
  15. Android Binder 之 ServiceManager (基于android 12.0/S)
  16. 电脑视频加水印怎么加?
  17. 01、【江科大自化协stm32F103c8t6】笔记之【入门32单片机及GPIO初始化参数配置】
  18. 入坑就对了!如何用机器学习甄别真假美猴王?
  19. python和vb基础哪个简单_python和VB哪个更容易学习入门呢?
  20. 2021 CCF CSP-J2

热门文章

  1. vue-cropper图片裁剪 结合 OSS 实现图片直传(后台)
  2. Ubuntu登录界面键盘鼠标失灵
  3. spaCy 2.1 中文NLP模型
  4. hdwiki的php架构,关于HDWiki的安装踩坑
  5. 抖音小程序支付宝异步回调中验签php代码
  6. 人工智能可以应用在哪些领域?
  7. win10 开热点 【服务主机:网络服务】 疯狂跑流量的解决方案 亲测有效!!!!
  8. 阿里巴巴淘系开源首个多模态直播服饰检索数据集
  9. 还不会用Vue写出的excel表实现pdf导出吗?来,豪豪手把手教你
  10. Java基础篇--设计模式