黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java產生隨機數的方法

Java產生隨機數的方法

更新時間:2022-12-15 11:11:35 來源:動力節點 瀏覽1691次

通常情況下,我們會提出生成隨機數或生成范圍內隨機數的 2 類需求。Java 支持通過ThreadLocalRandom, java.lang.Math和java.util.Random類生成隨機數。讓我們看看有哪些不同的選項以及如何在Java生成隨機數

1.使用ThreadLocalRandom生成隨機數

如果您使用的是 Java 1.7 或更高版本,ThreadLocalRandom應該是您在 Java 中生成隨機數的標準方法。在 Java 或任何其他語言中生成隨機數時可以有 2 種變體。

生成沒有范圍的隨機數。

生成給定范圍內的隨機數。

package com.javadevjournal.date;
import java.util.concurrent.ThreadLocalRandom;
public class RandomNumberGeneration {
    public static void main(String[] args) {
        int lowerBound = 4;
        int upperBound = 20;
        int random_int = ThreadLocalRandom.current().nextInt(); //returns pseudorandom value
        System.out.println(random_int); //output will be different on different machine (2063277431 while running example);
        /*generate random int within given range between 0 upper given bound.
         * The upper bound is non exclusive i'e it will not be counted while generating the
         * random number.
         * */
        int random_int_with_upper_bound = ThreadLocalRandom.current().nextInt(upperBound);
        System.out.println(random_int_with_upper_bound); // 6 while we were running the code.
        /**
         * Generate random number with a given range of lower and upper bound.
         */
        int random_int_range = ThreadLocalRandom.current().nextInt(lowerBound, upperBound + 1);
        System.out.println(random_int_range); // 18 while we were running the code.
    }
}

使用時請記住以下要點ThreadLocalRandom。

如果您不提供下限,則下限為 0。

上限是非排他性的,如果要在隨機數生成中添加上限(將上限加 1 以包含它),則需要小心。

我們不需要對ThreadLocalRandom類進行顯式初始化。

如果綁定是<=0,它將拋出IllegalArgumentException。

如果下限大于或等于上限,類將拋出IllegalArgumentException。

int lowerBound = 4;
int upperBound = 3;
/**
  * These will throw IllegalArgumentException.
*/
ThreadLocalRandom.current().nextInt(lowerBound, upperBound);
ThreadLocalRandom.current().nextInt(0);

nextDouble()andnextFloat()方法允許生成 float 和 double 值。它的工作方式類似于上面的示例,我們可以在生成隨機 double 或 float 數字時傳遞下限和上限。

ThreadLocalRandom.current().nextDouble();
ThreadLocalRandom.current().nextDouble(1.0, 34.0);
ThreadLocalRandom.current().nextFloat();

2.使用隨機類

如果您使用的不是 Java 1.7 或更高版本,我們可以使用java.util.Random該類在 Java 中生成隨機數。以下是該類的一些詳細信息:

nextInt(upperBound) – Generate random int between 0 and upperbound -1;

nextFloat() – Generate float between 0.0 to 1.0.

nextDouble() – Generate double between 0.0 to 1.0.

package com.javadevjournal.date;
import java.util.Random;
public class RandomNumberGeneration {
    public static void main(String[] args) {
        int min = 1;
        int max = 67;
        Random random = new Random();
        //Get random int between [0-66]
        int randomInt = random.nextInt(max);
        /*
         If we want to include 67 in the range, add 1 to the upper bound
         i.e max+1
          generate random int between [0- 67]
         */
        int upperBoundInt = random.nextInt(max + 1);
        //another variation
        int randomNum = random.nextInt((max - min) + 1) + min;
        //Double random number
        double randomDouble = random.nextDouble();
        float randomFloat = random.nextFloat();
    }
}

3. 使用 Math.random

如果我們只需要整數或浮點隨機值,我們可以使用 Math.random。這是來自Math.random類的示例代碼:

double random = Math.random();

這將返回大于或等于0.0且小于的正雙精度值1.0。在許多用例中,我們可能希望在給定范圍內生成隨機數。其中一種選擇是使用以下表達式

<前>Math.random() * ((max - min) + 1)) +min

Math.random()在范圍內生成雙精度值 [0,1)。

要獲得特定范圍的值,我們應該乘以我們想要覆蓋的值范圍的大小 ( * ( Max - Min ))。

將此范圍向上移動到您的目標范圍。您可以通過添加最小值(表達式的最后一部分+min)來做到這一點

public class RandomNumberGeneration {
    public static void main(String[] args) {
        double min = 1;
        double max = 67;
        /*
         Generate random number with in given range
         */
        double random = (int)(Math.random() * ((max - min) + 1));
        System.out.println(random);
    }
}

4. Math.random() 與 Random.nextInt(int)

如果您只對將 int 作為隨機數感興趣,您應該選擇 ,Random.nextInt(n)因為此選項更有效且偏差更小。以下是使用Random.nextInt over的一些優點Math.random()

Math.random()在內部使用Random.nextDouble()。最好使用原始的而不是通過它進行路由。

Random.nextInt(n)是可重復的。我們可以通過傳遞相同的種子來創建 2 個不同的隨機對象。

Math.random()也需要大約兩倍的處理,并且需要同步。

5. 使用 Java 8 生成隨機數

雖然大多數情況可以使用 輕松完成,但是,如果您對如何在 Java 8ThreadLocalRandom中生成隨機數更感興趣 ,這里有幾個選項可以使用Java 8完成它。

import java.util.Random;
import java.util.SplittableRandom;
import java.util.stream.IntStream;
public class RandomNumberGeneration {
    public static void main(String[] args) {
        int min = 1;
        int max = 67;
        int size=50;
        /*
          return int between the specified
         * min range (inclusive) and the specified upper bound (exclusive).
         */
        int randomInt= new SplittableRandom().nextInt(min, max);
        //TO return stream of random values
        IntStream stream = new SplittableRandom().ints(size, min, max);
        // to generate int[]
        int[] randomArray= new SplittableRandom().ints(size, min, max).toArray();
        int[] randomArray1= new Random().ints(size, min,max).toArray();
    }
}

以上就是關于“Java產生隨機數的方法”介紹,大家如果想了解更多相關知識,不妨來關注一下動力節點的Java在線學習,里面的課程內容細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 在线精品国精品国产不卡 | 午夜婷婷网 | 天天射视频 | 在线观看黄色网页 | 成人观看网站a | 波多野结衣中文字幕在线视频 | 国产黄色大片网站 | 中文字幕一区二区三区在线观看 | 中国大陆高清aⅴ毛片 | 国产桃色在线成免费视频 | 一级毛片高清免费播放 | 日韩不卡一区二区 | 黄色影视| 两个人看的www免费 两个人看的www高清免费视频 | 欧美污视频网站 | 毛片一级片 | 亚洲国产成人精品一区91 | 中文字幕天天躁日日躁狠狠 | 影音先锋在线亚洲精品推荐 | 三级伦理影院 | 午夜影院免费观看视频 | 国产色视频在线观看免费 | 欧美成人高清在线视频大全 | 视频一区国产精品 | 手机在线看片不卡中文字幕 | 韩国日本三级在线观看 | 精品精品精品 | 永久在线毛片免费观看 | 久久久久国产一级毛片高清片 | 一区二区视频在线免费观看 | 波多野结衣 一区 | 怡春院日本一区二区久久 | 一级做a爰片欧美一区 | 久久受www免费人成_看片中文 | 一a一级片| 高清国产亚洲va精品 | 欧美日韩在线精品一区二区三区 | 亚洲日本韩国欧美 | 中国一级黄色录像片 | 毛片在线观看网站 | 欧美中文字幕在线视频 |