App下載

Java怎么生成隨機(jī)數(shù)?Random類有哪些用法?

猿友 2021-05-19 18:04:53 瀏覽數(shù) (3715)
反饋

軟件中經(jīng)常需要產(chǎn)生隨機(jī)數(shù)。比如游戲中常用隨機(jī)數(shù)代表投骰子或者洗牌,抽獎經(jīng)常用隨機(jī)數(shù)模擬抽獎概率。在 Java 中,有一個  Random 類專門用來模擬隨機(jī)數(shù)。接下來,就讓小編帶你了解一下這個類。

生成整型的隨機(jī)數(shù)

使用 Random 類的 ?nextInt() ?方法,可以生成一個范圍為整個 int 取值區(qū)間的 int 類型隨機(jī)數(shù)。

 ?nextInt()? 方法可以傳入一個 int 類型的參數(shù),傳參情況下生成的隨機(jī)數(shù)范圍是從 0 到該參數(shù)的范圍。

生成浮點(diǎn)型的隨機(jī)數(shù)

使用 Random 類的? nextFloat()?/?nextDouble()? 方法,可以生成一個范圍為0到1.0范圍內(nèi)的浮點(diǎn)型隨機(jī)數(shù)(兩種方法產(chǎn)生的隨機(jī)數(shù)精度不同)。

Random的其他方法

使用 Random 類的 ?nextGaussian()? 方法,可以生成一個偽高斯分布的均值為0.0,標(biāo)準(zhǔn)差為1.0從此隨機(jī)數(shù)生成器的序列的 double 值。

import java.util.Random;

public class RandomNumbers{
    public static void main(String[] args) {
        int num1 = new Random().nextInt();//使用Random的nextInt方法生成int類型隨機(jī)數(shù),范圍為整個int的取值區(qū)間
        System.out.println(num1);
        int num2=new Random().nextInt(10);//使用Random的nextInt方法生成int類型隨機(jī)數(shù),范圍為0到輸入?yún)?shù)的取值區(qū)間
        System.out.println(num2);
        num2 = new Random().nextInt(10)+10;//通過加減法,修改最終生成隨機(jī)數(shù)的生成范圍
        float num3 =new Random().nextFloat();
        //使用Random的nextFloat方法生成float類型隨機(jī)數(shù),范圍為0d到1.0區(qū)間的浮點(diǎn)隨機(jī)數(shù)
        System.out.println(num3);
        double num4 =new Random().nextDouble();
        //使用Random的nextDouble方法生成double類型隨機(jī)數(shù),范圍為0d到1.0區(qū)間的浮點(diǎn)隨機(jī)數(shù)
        System.out.println(num4);
        double num5 = new Random().nextGaussian();
        //生成一個偽高斯分布的均值為0.0,標(biāo)準(zhǔn)差為1.0從此隨機(jī)數(shù)生成器的序列的double值。
        System.out.println(num5);
    }
}

更多技巧

可以通過加減乘除,來擴(kuò)大縮小,或者移動區(qū)間的范圍。

在生成的隨機(jī)數(shù)后面加10,可以讓所有生成的隨機(jī)數(shù)都加10,從而使隨機(jī)數(shù)生成的區(qū)間范圍向右移動。

在生成的隨機(jī)數(shù)后面*10,可以讓所有生成的隨機(jī)數(shù)都擴(kuò)大10倍,從而使隨機(jī)數(shù)生成的區(qū)間范圍擴(kuò)大10倍。

小結(jié)

以上關(guān)于 Java 的 Random 的類的介紹就到這里,更多Java技術(shù)學(xué)習(xí),請關(guān)注菜鳥自學(xué)java教程。

0 人點(diǎn)贊