Java Random.nextDouble,nextFloat,nextLong,nextBoolean,nextBytes随机数

java中Random.nextDouble()用于返回一个大于或等于 0.0 且小于 1.0 的随机浮点数;Random.nextFloat()返回的是0.0-1.0之间的随机数;Random.nextLong()返回-9223372036854775808——9223372036854775807随机数;Random.nextBoolean()随机返回true/false;Random.nextBoolean()会为一个byte类型的数组随机赋值。

定义

double nextDouble()    //返回在0.0和1.0之间均匀分布的随机数double值。
float nextFloat()    //返回在0.0和1.0之间均匀分布随机数float值。
long nextLong()    //返回随机数生成器序列的均匀分布的随机数long 值。
boolean nextBoolean()    //返回随机数生成器序列的均匀分布的随机数boolean值。
void nextBytes(byte[] bytes)    //生成随机字节并将其置于用户提供的 byte 数组中。

源码

public double nextDouble() {
    return (((long)(next(26)) << 27) + next(27)) / (double)(1L << 53);
}
public long nextLong() {
    return ((long)(next(32)) << 32) + next(32);
}
public float nextFloat() {
    return next(24) / ((float)(1 << 24));
}
public boolean nextBoolean() {
    return next(1) != 0;
}

例子

public class RandomDemo {  
    public static void main(String[] args) throws Exception  
    {  
        Random random = new Random();
	System.out.println("Long:"+random.nextLong());
	System.out.println("double:"+random.nextDouble());
	System.out.println("float:"+random.nextFloat());
	System.out.println("boolean:"+random.nextBoolean());
	
	byte[] bytes = new byte[5];
	random.nextBytes(bytes);
	for (int i = 0; i < bytes.length; i++) {
	    byte aByte = bytes[i];
	    System.out.print(aByte+"\n");
	}
    }  
}

Random.nextBytes()中byte的取值范围为 -128到127,所以也就是说会为一个byte类型的数组在-128,127这个区间内重新随机赋值。