码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础知识强化81:Math类random()方法的小扩展(控制产生目的数字的概率)

时间:2015-09-25 11:09:49      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!