App下載

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

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

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

一、Math.random()方法

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

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

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

打印結(jié)果:

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

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

public class Demo01 {

    public static void main(String[] args) {

       int num;

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

            /**
             * 要求是在[20,35]之間生成一個(gè)隨機(jī)整數(shù)
             * 因?yàn)橐?5,但是random隨機(jī)生成是不包括右側(cè)的值,所以右側(cè)取36
             * 即[20,36)
             * 左右各減去20   [0,16)
             * 而Math.random的范圍是在[0,1),需要乘上16
             * 最后再加上20,即[20,36)
             * 在進(jìn)行 int 強(qiáng)轉(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() 方法而言,它提供了各式各樣的生成隨機(jī)數(shù)的方式,可以生成 boolean,int,long,float,byte以及double類型的隨機(jī)數(shù)。

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

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

下面將通過(guò)編寫一個(gè)簡(jiǎn)單的 Java 程序,來(lái)演示 Random 的具體使用:

import java.util.Random;

public class Demo02 {

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

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

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

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

打印結(jié)果:

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

三、總結(jié)

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


0 人點(diǎn)贊