Java中Random.next***()与Math.random() 对比和方法使用详解

取随机数

  1. random方法只能生成小于1的随机小数(包括0和正小数),并不能生成随机整数。
  2. Random随机数工具包,可以解决random方法的问题:
    import java.util.Random;

该工具实例化(new)后,nextInt 方法生成int类型的随机整数、nextLong 方法生成long类型的随机长整数、nextfloat 方法生成float类型的随机浮点小数、nextdouble 方法生成double类型的随机双精度小数。

注:nextInt 和 nextLong 方法得到的随机整数可能是负数,而其他两个只能是正小数

接下来就详细讲解Random中的nextInt,其他的都跟其一样。

Java Random.next***()

语法

int nextInt()            //随机返回一个int型整数
int nextInt(int num)         //随机返回一个值在[0,num)的int类型的整数,包括0不包括num

实例

/**
     * 生成任意整数
     */
    @Test
    public void RandomNextIntDemo1(){
    
    
        Random r = new Random();
        int n1 = r.nextInt();
        System.out.println("d1:"+n1);
    }
    
    /**
     * 生成[0,10)区间的整数
     */
    @Test
    public void RandomNextIntDemo2(){
    
    
        Random r = new Random();
        int n2 = r.nextInt(10);
        int n3 = Math.abs(r.nextInt() % 10);
        System.out.println("n2:"+n2);
        System.out.println("n3:"+n3);
    }

    /**
     * 生成[0,10]区间的整数
     */
    @Test
    public void RandomNextIntDemo3(){
    
    
        Random r = new Random();
        int n3 = r.nextInt(11);
        int n4 = Math.abs(r.nextInt() % 11);
        System.out.println("n3:"+n3);
        System.out.println("n4:"+n4);
    }

Java Math.random()

Java Math.random() 方法用于返回一个随机数,随机数范围为 0.0 =< Math.random < 1.0。

语法

static double random();

参数

  • 这是一个默认方法,不接受任何参数。

返回值

  • 该方法返回 double 值。

实例

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

运行结果:

0.5444085967267008
0.7960235983184115

综合实例

生成一个 0-100 的随机数

import java.util.Random;

public class RandomTest{
    
    
	public static void main(String[] args){
    
    
		Random rand=new Random();
		int i=(int)(Math.random()*100);       //  生成0-100的随机数
		int j=rand.nextInt(100);              // 这里是一个方法的重载,参数的内容是指定范围
		System.out.println("i:"+i+"\nj:"+j); // 分别输出两个随机数
	}
}

运行结果:

i:55
j:34

猜你喜欢

转载自blog.csdn.net/weixin_46312449/article/details/112638076