App下載

Java中兩種生成隨機數(shù)的方式 詳細內(nèi)容總結(jié)

猿友 2021-07-28 11:05:07 瀏覽數(shù) (2515)
反饋

在Java中想要在指定范圍內(nèi)生成隨機數(shù)的實現(xiàn)方式主要有兩種,一種是使用Math類中的random()方法,另一種是使用Random類。下面文章將為大家詳細總結(jié)Java中這兩種生成隨機數(shù)的方式。

一、Math.random()方法

該方法相對于 Random 類而言比較簡單,因為 Math 類是 Java 的內(nèi)置包裝類,無需創(chuàng)建一個實例化對象,可以在程序中直接調(diào)用該類,以及使用該類的方法。

使用該方法的小伙伴們應該都知道,該方法只能是生成 [0.0,1.0) 之間 double 類型的任意一個小數(shù),生成的隨機數(shù)相對比較單一,想要生成其他類型的,就需要在該方法前面加上一個類型強轉(zhuǎn)。

public class Demo01 {
    public static void main(String[] args) {
        for (int i = 0; i <5 ; i++) {
            System.out.println("第"+(i+1)+"個隨機數(shù)"+Math.random());
} } }

打印結(jié)果:

第1個隨機數(shù)0.414584525834634
第2個隨機數(shù)0.20853675432372987
第3個隨機數(shù)0.8055865595912437
第4個隨機數(shù)0.36986922245541953
第5個隨機數(shù)0.8716016725358281

生成具體范圍內(nèi)的任意一個整數(shù),例如在 [20, 35] 之間生成隨機數(shù)。

public class Demo01 {

    public static void main(String[] args) {

       int num;

        for (int i = 0; i < 5; i++) {

            /**
             * 要求是在[20,35]之間生成一個隨機整數(shù)
             * 因為要包括35,但是random隨機生成是不包括右側(cè)的值,所以右側(cè)取36
             * 即[20,36)
             * 左右各減去20   [0,16)
             * 而Math.random的范圍是在[0,1),需要乘上16
             * 最后再加上20,即[20,36)
             * 在進行 int 強轉(zhuǎn)
             * */
            num = (int)(Math.random()*16)+20;
            System.out.println("第"+(i+1)+"次:"+num);
        }
    }
}

打印結(jié)果:

第1次:29
第2次:25
第3次:33
第4次:34
第5次:30

二、Random類

Random 相較于 Math.random() 方法而言,它提供了各式各樣的生成隨機數(shù)的方式,可以生成 boolean,int,long,float,byte以及double類型的隨機數(shù)。

Random 類是屬于 java.util 包的,該類經(jīng)常使用的兩個構(gòu)造方法如下:

  • Random()    使用一個和系統(tǒng)時間(也就是你電腦右下角的時間)對應的數(shù)字作為種子數(shù),然后根據(jù)這個種子數(shù)構(gòu)造一個 Random 對象。
  • Random(long seed)    使用單個 long 類型的參數(shù)創(chuàng)建一個新的隨機數(shù)生成器。
Random 類中的常用方法:
Random類常用方法

下面將通過編寫一個簡單的 Java 程序,來演示 Random 的具體使用:

import java.util.Random;

public class Demo02 {

    public static void main(String[] args) {
        // 需要創(chuàng)建一個Random類實例化對象
        Random random=new Random();
        double d1=random.nextDouble(); // 生成一個[0.0,1.0)之間double類型的小數(shù)
        double d2=random.nextDouble() * 10; // 生成一個[0.0,10.0)之間double類型的小數(shù)

        int i1=random.nextInt(5); // 生成[0,5)之間的一個整數(shù)
        int i2=random.nextInt(15)-5;// 生成[-5,10)之間的一個整數(shù)

        long l1=random.nextLong(); // 生成一個長整型的整數(shù)
        boolean b1=random.nextBoolean(); // 生成一個布爾值
        float f1=random.nextFloat(); // 生成一個浮點型

        System.out.println("[0.0,1.0)隨機生成的小數(shù)是:"+d1);
        System.out.println("[0.0,10.0)隨機生成的小數(shù)是:"+d2);
        System.out.println("[0,5)隨機生成的整數(shù)是:"+i1);
        System.out.println("[-5,10)隨機生成的整數(shù)是:"+i2);
        System.out.println("隨機生成的長整型是:"+l1);
        System.out.println("隨機生成的布爾值是:"+b1);
        System.out.println("隨機生成的浮點型是:"+f1);
    }
}

打印結(jié)果:

[0.0,1.0)隨機生成的小數(shù)是:0.9045874539818738
[0.0,10.0)隨機生成的小數(shù)是:1.1869962319035776
[0,5)隨機生成的整數(shù)是:2
[-5,10)隨機生成的整數(shù)是:1
隨機生成的長整型是:4030922400205769823
隨機生成的布爾值是:true
隨機生成的浮點型是:0.3139649

三、總結(jié)

本篇關(guān)于 Java 中生成隨機數(shù)的兩種方式,Math.random() 和 Random 類的詳細內(nèi)容介紹到此就結(jié)束了,想要了解更多相關(guān)于 Java 隨機相關(guān)的知識,可以搜索W3Cschool相關(guān)文章。希望本篇文章對大家的學習有所幫助,也希望大家能夠多多地關(guān)注和支持我們!


0 人點贊