Java Random类
java.util.Random类提供了一系列用于生成伪随机数的方法.
Random类是JDK中的随机数生成器类,可以通过实例化一个Random对象创建一个随机数生成器.
Random random=new Random();
Java编译器将以系统当前时间
作为随机数生成器的种子
.因为每时每刻的时间不可能相同,所以每次生成的随机数都不一样
.但是如果运行速度太快,也会产生两个运行结果相同的随机数.
Random类的构造方法:
1. public Random():创建一个Random对象
2. public Random(long seed):使用参数seed指定的种子创建一个Random对象
相同种子数的Random对象,相同次数生成的随机数是相同的.
也就是说,两个种子数相同的Random对象,第一次生成的随机数完全相同,第二次生成的随机数也完全相同…
import java.util.Random;
public class Text2 {
public static void main(String[] args) {
Random r1=new Random(6);
Random r2=new Random(6); //创建两个种子数相同的Random对象
System.out.println("r1生成的随机序列:");
for(int i=0;i<6;i++)
{
System.out.print(r1.nextInt()+" ");
}
//此时你可以指定生成的随机数范围如:r1.nextInt(100);但是必须也给r2加上100,否则生成的随机数序列不一样
System.out.println("\n"+"r2生成的随机序列:");
for(int j=0;j<6;j++)
{
System.out.print(r2.nextInt()+" ");
}
}
}
/*r1生成的随机序列:
-1156254074 1587013752 -1805495963 895648357 -953430013 -1016102489
r2生成的随机序列:
-1156254074 1587013752 -1805495963 895648357 -953430013 -1016102489 */
Random类常用的方法:
1. public int nextInt():生成一个随机的介于-2^31和2^31-1之间的int值
2. public int nextInt(int n):生成一个随机的在[0,n)范围之间的int值
3. public boolean nextInt(int a,int b):生成一个随机的在[a,b)范围之间的int值
4. public float nextFloat():生成一个随机的float值,数值介于[0,1.0)
5. public float nextFloat(float n):生成一个随机的float值,数值介于[0,n)
6. public float nextFloat(float a,float b):生成一个随机的float值,数值介于[a,b)
7. public double nextDouble():生成一个随机的double值,数值介于[0,1.0)之间
8. public double nextDouble(double n):生成一个随机的double值,数值介于[0,n)
9. public double nextDouble(double a,double b):生成一个随机的double值,数值介于[a,b)
10.public boolean nextBoolean():生成一个随机的boolean值
11. public long nextLong():返回一个随机长整型值
12. public long nextLong(long n):生成一个随机的long值,数值介于[0,n)
13. public long nextLong(long a,long b):生成一个随机的long值,数值介于[a,b)
14. public double nextGaussian():返回一个概率密度为高斯分布的双精度浮点型值(返回平均值为0.0,标准差为1.0的下一个伪随机高斯分布双精度数)
15. public double nextGaussian(double mean,double stddev):自定义均值,标准差
import java.util.Random;
public class Text2 {
public static void main(String[] args) {
Random r=new Random();
System.out.println("[0,10)之间的随机整数序列:");
for(int i=0;i<10;i++)
{
int a=r.nextInt(10);
System.out.print(a+" "); //8 2 0 7 9 0 6 9 7 8
}
System.out.println("\n"+"随机boolean序列:");
for(int j=0;j<10;j++)
{
System.out.print(r.nextBoolean()+" ");
}
System.out.println("\n"+"[0,1.0)之间的随机double序列");
for(int k=0;k<5;k++)
{
System.out.print(r.nextDouble()+" ");
}
}
}
/*[0,10)之间的随机整数序列:
7 4 5 0 2 5 1 3 4 8
随机boolean序列:
true true false true false false false true false false
[0,1.0)之间的随机double序列
7.000985606205878E-4 0.20796708587251245 0.06288670999858792 0.6776123265691946 0.5195104616802022 */