您的位置:首页 > 编程语言 > Java开发

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少,依次下去……

实现代码:

 /**
* 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());
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: