Java基础知识强化80:Math类random()方法的小扩展(控制产生目的数字的概率)
2015-09-25 10:30
447 查看
1. Math.random()方法:
Math.random()出现的数据是0.0<= x < 1.0之间,随机出现一个数据Math.random()>0.1概率是0.9
那么如下:
Math.random()>0.1? 2:4
上面表示出现数字2的概率为0.9,出现数字4的概率为0.1
2. 上面出现的是两个数,如果我们案例需求是多个数,控制概率出现,该怎么办呢?
下面是一个案例:
做一个翻宝程序,通过返回数字0-5来判断中奖情况,
012345,这几个数字的出现的概率是0出现最高,1出现比0少,2出现比1少,依次下去……
实现代码:
Math.random()出现的数据是0.0<= x < 1.0之间,随机出现一个数据Math.random()>0.1概率是0.9
那么如下:
Math.random()>0.1? 2:4
上面表示出现数字2的概率为0.9,出现数字4的概率为0.1
2. 上面出现的是两个数,如果我们案例需求是多个数,控制概率出现,该怎么办呢?
下面是一个案例:
做一个翻宝程序,通过返回数字0-5来判断中奖情况,
012345,这几个数字的出现的概率是0出现最高,1出现比0少,2出现比1少,依次下去……
实现代码:
/** * JAVA 返回随机数,并根据概率、比率 * @author zhanglei * */ public class MathRandom { /** * 0 出现的概率为%50 */ public static double rate0 = 0.50; /** * 1 出现的概率为%20 */ public static double rate1 = 0.20; /** * 2 出现的概率为%15 */ public static double rate2 = 0.15; /** * 3 出现的概率为%10 */ public static double rate3 = 0.10; /** * 4 出现的概率为%4 */ public static double rate4 = 0.04; /** * 5 出现的概率为%1 */ public static double rate5 = 0.01; /** * Math.random()产生一个double型的随机数,判断一下 * 例如0出现的概率为%50,则介于0到0.50中间的返回0 * @return int * */ private int PercentageRandom() { double randomNumber; randomNumber = Math.random(); if (randomNumber >= 0 && randomNumber <= rate0) { return 0; } else if (randomNumber >= rate0 / 100 && randomNumber <= rate0 + rate1) { return 1; } else if (randomNumber >= rate0 + rate1 && randomNumber <= rate0 + rate1 + rate2) { return 2; } else if (randomNumber >= rate0 + rate1 + rate2 && randomNumber <= rate0 + rate1 + rate2 + rate3) { return 3; } else if (randomNumber >= rate0 + rate1 + rate2 + rate3 && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4) { return 4; } else if (randomNumber >= rate0 + rate1 + rate2 + rate3 + rate4 && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4 + rate5) { return 5; } return -1; } /** * 测试主程序 * @param agrs */ public static void main(String[] agrs) { int i = 0; MathRandom a = new MathRandom(); for (i = 0; i <= 100; i++)//打印100个测试概率的准确性 { System.out.println(a.PercentageRandom()); } } }
相关文章推荐
- java 内部类
- Java面向对象三大特征:封装、继承、多态
- Java删除指定文件夹下的所有内容(包括此文件夹)
- SpringMVC与Freemark整合,多视图完美展示详细完美解决
- java SOF
- struts2 异常处理 404错误
- ConcurrentHashMap实现解析
- java OOM
- Java基础知识强化79:Math类概述与成员方法
- java查找最大相同子串
- JAVA基础学习day15--集合二 TreeSet和泛型
- path,classPath,java_home
- 一段java代码的一些思索
- 设计模式之外观模式Facade(结构型)
- 【springmvc+mybatis项目实战】杰信商贸-26.出货表修饰+下载
- eclipse下安装和使用svn版本控制[详细图解]
- ubuntu java 环境配置
- Eclipse 打开出现Failed to create the java Virtual Machine解决
- 马士兵_JAVA自学之路
- Spring+Quartz实现定时器(转载)