Java:Math.random()方法和Random类

Math.random()方法

static double random()

Math.random()默认产生大于等于0.0且小于1.0之间的随机double型随机数,即介于[0,1)

实例

public class Test{
    public static void main(String args[]){
        System.out.println( Math.random() );
        System.out.println( Math.random() );
    }
}

编译以上程序,输出结果为:
0.5444085967267008
0.7960235983184115

Random类

构造方法

Random randomValue = new Random();

JDKjava.util包中有一个Random类它可以在指定的取值范围内随机产生数字
在Random类中有两种构造方法:

  1. Random()无参构造方法,用于创建一个伪随机数生成器。
  2. Random(long seed)有参构造方法,使用一个long类型的seed种子创建伪随机数生成器。

区别:
我们知道计算机时无法生成真正的随机数的,计算机只能生成伪随机数,而不管用什么方法实现随机数发生器,都必须给它提供一个名为“种子”的初始值。所以Random类两种构造方法的区别在于种子(seed)

无参构造方法
**无参构造方法其实是以系统当前时间作为随机数生成的种子(**自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数),每毫秒都在变换,所以每次种子都不一样,生成的随机数也就不一样。

import java.util.Random;
public class Demo{
	public static void main(String[] args){
		
        Random r=new Random();//以系统当前时间作为随机数生成的种子
        for(int i=0;i<8;i++){//生成8个随机数
        	System.out.print(r.nextInt(100)+" ");//生成[0,100)的整数随机数
        }
	}
}

编译以上程序,输出结果为:
7 24 12 39 1 50 33 45
再次编译
3 30 22 37 88 45 14 20

有参构造方法则是自己指定种子,如果每次的种子相同,那么生成的随机数也相同。

import java.util.Random;
public class Demo{
	public static void main(String[] args){
		
        Random r=new Random(10);//自定义随机数种子
        for(int i=0;i<8;i++){//生成8个随机数
        	System.out.print(r.nextInt(100)+" ");//生成[0,100)的整数随机数
        }
	}
}

编译以上程序,输出结果为:
13 80 93 90 46 56 97 88
再次编译
13 80 93 90 46 56 97 88


Random类的常用方法nextInt():

nextInt()方法会随机生成一个整数,这个整数的范围就是int类型的范围-231 ~ 231-1,但是如果在nextInt()括号中加入一个整数N那么,这个随机生成的随机数范围就变成**[0,N)**。

扫描二维码关注公众号,回复: 8911504 查看本文章

Random类的其他方法

方法 描述
double nextDouble() 返回0.0至1.0之间的double类型值
float nextFloat() 返回0.0至1.0之间的float类型值
int nextInt(int n) 返回 [ 0 , n ) [0,n) 之间的int值
int nextInt() 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值
long nextLong() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值
protected int next(int bits) 生成下一个伪随机数
boolean nextBoolean() 返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值
void nextBytes(byte[] bytes) 生成随机字节并将其置于用户提供的 byte 数组中
double nextGaussian() 返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其期望是0.0标准差是1.0
void setSeed(long seed) 使用单个 long 种子设置此随机数生成器的种子
发布了39 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42820594/article/details/104072016