标签:
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少,依次下去……
实现代码:
1 /** 2 * JAVA 返回随机数,并根据概率、比率 3 * @author zhanglei 4 * 5 */ 6 public class MathRandom 7 { 8 /** 9 * 0 出现的概率为%50 10 */ 11 public static double rate0 = 0.50; 12 /** 13 * 1 出现的概率为%20 14 */ 15 public static double rate1 = 0.20; 16 /** 17 * 2 出现的概率为%15 18 */ 19 public static double rate2 = 0.15; 20 /** 21 * 3 出现的概率为%10 22 */ 23 public static double rate3 = 0.10; 24 /** 25 * 4 出现的概率为%4 26 */ 27 public static double rate4 = 0.04; 28 /** 29 * 5 出现的概率为%1 30 */ 31 public static double rate5 = 0.01; 32 33 /** 34 * Math.random()产生一个double型的随机数,判断一下 35 * 例如0出现的概率为%50,则介于0到0.50中间的返回0 36 * @return int 37 * 38 */ 39 private int PercentageRandom() 40 { 41 double randomNumber; 42 randomNumber = Math.random(); 43 if (randomNumber >= 0 && randomNumber <= rate0) 44 { 45 return 0; 46 } 47 else if (randomNumber >= rate0 / 100 && randomNumber <= rate0 + rate1) 48 { 49 return 1; 50 } 51 else if (randomNumber >= rate0 + rate1 52 && randomNumber <= rate0 + rate1 + rate2) 53 { 54 return 2; 55 } 56 else if (randomNumber >= rate0 + rate1 + rate2 57 && randomNumber <= rate0 + rate1 + rate2 + rate3) 58 { 59 return 3; 60 } 61 else if (randomNumber >= rate0 + rate1 + rate2 + rate3 62 && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4) 63 { 64 return 4; 65 } 66 else if (randomNumber >= rate0 + rate1 + rate2 + rate3 + rate4 67 && randomNumber <= rate0 + rate1 + rate2 + rate3 + rate4 68 + rate5) 69 { 70 return 5; 71 } 72 return -1; 73 } 74 75 /** 76 * 测试主程序 77 * @param agrs 78 */ 79 public static void main(String[] agrs) 80 { 81 int i = 0; 82 MathRandom a = new MathRandom(); 83 for (i = 0; i <= 100; i++)//打印100个测试概率的准确性 84 { 85 System.out.println(a.PercentageRandom()); 86 } 87 } 88 }
Java基础知识强化81:Math类random()方法的小扩展(控制产生目的数字的概率)
标签:
原文地址:http://www.cnblogs.com/hebao0514/p/4837443.html