要获得一个随机数,有以下几种方法:
(1) 使用java.lang.Math类
Double ran=Math.random(); 这样就生成了一个0—1范围内的double随机数,要生成其它范围内的随机数,需要对其进行缩放,如生成0到1000范围内的随机数 的代码如下:
Int myrandom=1000*(Math.random());
生成100到1000范围内的随机数如下:
Int myrandom=100+(1000-100)(Math.random());需要注意的是double型数值转换为int时,小数部分被直接去掉,因此得到的随机数的均匀性收到一定影响。
(2)使用java.util.Random
这个类提供了丰富的生成随机数的方法。该类通过为其设置随机数发生器的种子来产生随机数序列。如果不给他提供种子,他就用当前时间作为种子。
他的一些方法如下:
nextBoolean:随即产生一个布尔值
nextInt 随即产生一个int值
nextLong 随即产生一个Long值
nextFloat 随即产生一个Float值
nextDouble随即产生一个double值
nextBytes 随即产生一个字节填充字节数数组
setSeed()方法设置随即原的种子
例子如下:
Random ran=new Random();
ran.setSeed(125698233);
for(int i=0;i<5;i++)
{
System.out.println(ran.nextBoolean());
}
System.out.println();
for(int i=0;i<5;i++)
{
System.out.println(ran.nextInt(100));//随即生产一个0到100之内的数
}
System.out.println();
for(int i=0;i<5;i++)
{
System.out.println(ran.nextFloat());
}
System.out.println();
for(int i=0;i<5;i++)
{
System.out.println(ran.nextDouble());
}
System.out.println();
for(int i=0;i<5;i++)
{
System.out.println(ran.nextLong());
}
(3)使用java.security.SecureRandom
类 SecureRandom继承了Random类,它能生成密码强度的随机数。该类能产生真正的随机数,而不是伪随机数。可以用长整数值或字节数组设置内部种子。如果不提供种子,SecureRandom实例将调用自行设置种子的方法来生成真正的随机数。
使用如下:
SecureRandom s=new SecureRandom();
for(int i=0;i<5;i++)
{
System.out.println(s.nextInt(100));
}