首先:
我们看看java中提供的的生成随机数的api,也就是Math.random();
//Math.random()生成的是一个0.0到1.0 (不包括1.0)之间的随机数;
double d = Math.random();
System.out.println(d);
那么既然有了这个那么我们是不是可以通过进一步的处理得到如0-n(不包括n)的结果
//可以生成的是一个0到100 (不包括100)之间的随机数; 推理出--> [0 ~ n)之间
int i = (int)(Math.random()*100);
System.out.println(i);
那么如果我们的需求是生成[ x ~ y )(不包括y)之间的如何去做呢?
//可以生成一个随机的(10~20)(不包括20)之间的随机数;
//(int)(Math.random()*(y-x))+(y-x)
int i2 = (int)(Math.random()*(20-10))+(10);
那我们再改造一下,就可以完成我们的需求了:
//可以生成一个随机的(10~29)(包括20)之间的随机数;
//(int)(Math.random()*(y-x+1))+(y-x)
int i3 = (int)(Math.random()*(20-10+1))+(10);
System.out.println(i3);
因此我们生成任意0 ~ n(不包括n)之间的任意数的公式为:
(int)(Math.random()*n)
生成 0 ~ n(包括n)之间的任意数的公式为:
(int)(Math.random()*(n + 1))
生成 x ~ y(不包括y)之间的任意数
(int)((Math.random()*(y-x))+x
生成 x ~ y(包括y)之间的任意数
(int)((Math.random()*(y-x+1))+x