Java生成随机数(利用Random类和Math.random()方法)

Java生成随机数(利用Random类和Math.random()方法)

Random 类(java.util.Random)

常用构造方法:

  • Random():该构造方法使用一个和当前系统时间对应的数字作为种子数,然后使用这个种子数构造 Random 对象。
    - Random(long seed):使用单个 long 类型的参数创建一个新的随机数生成器。

Random 类提供的所有方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的概率是均等的。

使用:

  1. boolean nextBoolean() 生成一个随机的 boolean 值,生成 true 和 false 的值概率相等
        Random r = new Random();
        System.out.println(r.nextBoolean());
    
  2. double nextDouble() 生成一个随机的 double 值,数值介于 [ 0 , 1.0 ) [0,1.0) [0,1.0),含 0 而不包含 1.0。
        Random r = new Random();
        System.out.println(r.nextDouble());
        // 0.40276562291149665
    
    如果要生成 [ 0 , n ) [0,n) [0,n)之间的随机双精度浮点数,则给r.nextDouble()乘以 n n n即可。
        Random r = new Random();
        System.out.println(r.nextDouble() * 10);
        // 4.399521217020129
    
  3. int nextlnt() 生成一个随机的 int 值,该值介于 int 的区间,也就是 − 2 31 -2^{31} 231~ 2 31 − 1 2^{31}-1 2311。如果
    需要生成指定区间的 int 值,则需要进行一定的数学变换。
        Random r = new Random();
        System.out.println(r.nextInt());
        // 1748484220
    
  4. int nextlnt(int n) 生成一个随机的 int 值,该值介于 [0,n),包含 0 而不包含 n。
        Random r = new Random();
        System.out.println(r.nextInt(2));
    
  5. void setSeed(long seed) 重新设置 Random 对象中的种子数。设置完种子数以后的 Random 对象和相同种子数使用 new 关键字创建出的 Random 对象相同.
  6. long nextLong() 返回一个随机长整型数字

Math 类的 random()

Math 类的 random() 方法没有参数,它默认会返回大于等于 0.0、小于 1.0 的 double 类型随机数,即 0<=随机数<1.0。对 random() 方法返回的数字稍加处理,即可实现产生任意范围随机数的功能。

下面使用 random() 方法实现随机生成一个 -100~100 偶数的功能。具体代码如下:

	public class Main {
    
    
	    public static void main(String[] args) {
    
    
	        int min = -100;
	        int max = 100;
	        int s = min + (int)(Math.random() * (max - min));
	        System.out.println(s);
	    }
	}

由于 m+(int)(Math.random()*n) 语句可以获取 m m m~ m + n m+n m+n 的随机数,所以 -100+(int)(Math. random()*(100-(-100)) 表达式可以求出 -100~100 的随机数。

猜你喜欢

转载自blog.csdn.net/qq_36944952/article/details/124710386