最近用到随机数,但是一直都没搞多清楚。刚好用到就总结一下。(主要是来源API以及网上)
主要关注两方面:
如何产生一个随机数;
如何控制产生的随机数范围,还包括正负,类型;
JAVA能实现随机数的方法主要有:
第一种:使用java.lang.math类中的Math.random()方法;
API说明是:返回带正号的
double
值,该值大于等于
0.0
且小于
1.0
。
返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。
使用:这个方法主要用来返回一个正整数,例:int a = (int) (Math.random() * 1000) ;
即可返回一个0~1000内的所有正整数,不过不知道包不包括0和1000,想也应该是包括地!当然你可以换成100。
很多时候我们用到随机数主要是出于某个对象或其他事件有多种可能的状态。通过产生随机数,
随机地实现某一状态,改变显示结果或是使程序进入某一分支中。
例如俄罗斯方块中,方块有七种类型,同时每一个方块又有四种状态。可以用这样的方式 来随机产生下落的
方块:
int blockType = (int) (Math.random() * 1000) % 7;
int turnState = (int) (Math.random() * 1000) % 4;
第二种:使用java.util.Random类的Random对象。当然他的功能就强大多了,不仅仅可以产生随机整数,浮点数,长整型,布尔数都可以。
只要调用相应的方法即可。
使用:java.util.Random r = new java.util.Random();
Tpye x = r.nextTpye();//这里用了描述语言,具体用那个自己选;
产生的随机数真不知道是那个。可以肯定上面代码如果是整型,那一般是很大的数,同时有正有负。
如何生成某个范围的随机数?比如像上面,0~1000之间的随机数?
一般的方法是:取正取模
Random r = new Random();
int a = (r.nextInt()>>>1)%100;
但会出现值偏小的情况。
所以,JDK升级的版本的用法就为nextInt(100)产生0-100之间的随机数,更方便。
API:public int
nextInt(int n)
返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的
int
值。
其他类型的也一样。
还可以简单地用如:
Random r = new Random();
int i = r.randomInt(10);//输入一个0到9 的随机数;
就先写到这里,有机会再加吧!