JAVA 计算宝箱概率问题
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 计算宝箱概率问题相关推荐
- java计算筛子概率_剑指Offer解题报告(Java版)——n个骰子的点数 43
问题 n个骰子朝上的数之和为s,求s的所有可能以及概率 分析问题 如果是用笨方法,一般人最开始都会想到笨方法,那就是枚举法 举个例子,比如两个骰子,第一个骰子的结果为1,2,3,4,5,6,两个骰子的 ...
- java计算筛子概率_使用excel计算骰子输赢概率
如何得到使用3个骰子掷赢4个骰子的概率(每个骰子的点数为1-6,点数一样算输) 分为3步解决: 第一步.计算n个骰子得到m点数的分布 1个骰子能得到1.2.3.4.5.6点数,每个点数出现的方式只有1 ...
- java计算彩票概率_体彩“36选7”玩法:投注简单中奖概率高
一提到体育彩票的500万元奖金,相信彩民首先想到的就是"七星彩". 确实本年度"七星彩"巨额的头奖是不断的开出,相对于它的"36先7"玩法出 ...
- 【项目实战】——Java根据奖品权重计算中奖概率实现抽奖(适用于砸金蛋、大转盘等抽奖活动)...
Java根据奖品权重计算中奖概率实现抽奖http://www.bieryun.com/1035.html 双蛋节(圣诞+元旦)刚刚过去,前几天项目上线的砸金蛋活动也圆满结束. 现在在许多网站上都会有抽 ...
- java不确定人数扑克牌发牌技巧_汪峰被曝系德州扑克高手 善于计算发牌概率(图)...
汪峰为了"上头条" 已经跳出娱乐圈,奔向体育圈! 4月14日,2015中国扑克锦标赛将在南京举办.据赛事主办方介绍,"摇滚歌手"汪峰确认将参加开幕式及冠军慈善赛 ...
- java中奖率算法_JS简单实现:根据奖品权重计算中奖概率实现抽奖的方法
本文主要介绍:使用 JS 根据奖品权重计算中奖概率实现抽奖的方法. 一.示例场景 1.1.设置抽奖活动的奖项名称 奖项名称:["一等奖", "二等奖", &qu ...
- Java计算两个字符串日期之间的天数差
Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException {String a = & ...
- 炒股Java_基于java计算买卖股票的最佳时机
这篇文章主要介绍了基于java计算买卖股票的最佳时机,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 问题: 可以将问题转化为如下图所示,即求多个累计 ...
- java中日期计算时间差,用java计算日期/时间差
用java计算日期/时间差 我也想计算两个日期之间的差额以小时/分钟/秒为单位. 我的代码有一个小问题,就是:String dateStart = "11/03/14 09:29:58&qu ...
最新文章
- shell之常用脚本
- wxWidgets:构建wxWidgets程序的第一步
- 美团在Redis上踩过的一些坑-5.redis cluster遇到的一些问题
- Linux 配置文件
- ubuntu安装portainer_Docker【二】:Docker管理工具Portainer
- vts传感器采取船舶的_智慧船舶交通管理系统
- 移动端常用的四个框架
- 一个 bug ,罚款 200,我真待过这样的公司
- 基于概率的项目相似度之并行方法
- [读书笔记] - 《深度探索C++对象模型》第4章 Function语意学
- .net textbox全屏后自适应变大_手机屏幕太小?无套路不花钱变大屏!
- N1网络命令-ping
- 使用postman下载文件
- 灵活就业人员压力好大,不知道该不该继续交社保?
- Android Binder 之 ServiceManager (基于android 12.0/S)
- 电脑视频加水印怎么加?
- 01、【江科大自化协stm32F103c8t6】笔记之【入门32单片机及GPIO初始化参数配置】
- 入坑就对了!如何用机器学习甄别真假美猴王?
- python和vb基础哪个简单_python和VB哪个更容易学习入门呢?
- 2021 CCF CSP-J2