在 Java 中生成指定範圍內的隨機數

Mohammad Irfan 2023年1月30日 2021年3月21日
  1. 使用 Java 中的 ThreadLocalRandom 類生成隨機數
  2. 使用 Java 中的 Math 類生成隨機數
  3. 使用 Java 中的 Random 類生成隨機數
  4. 使用 Java 中的 Random 類生成隨機數
  5. 使用 Java 中的 Random 類和 IntStream 生成隨機數
  6. 使用 Java 中的 nextFloat 方法生成隨機數
  7. 使用 Java 中的 RandomData 類生成隨機數
  8. 使用 Java 中的 SecureRandom 類生成隨機數
  9. 使用 Java 中的 RandomUtils 類生成隨機數
在 Java 中生成指定範圍內的隨機數

本教程介紹瞭如何在 Java 中生成指定範圍內的隨機數。

有幾種在 Java 中生成隨機數的方法,例如 ThreadLocalRandom 類的 nextInt() 方法,Math 類的 random() 方法,Random 類,Random 類的 ints() 方法,Random 類的 nextFloat() 方法和 RandomUtil 類,等等。

使用 Java 中的 ThreadLocalRandom 類生成隨機數

Java 併發包提供了具有 nextInt() 方法的類 ThreadLocalRandom。此方法可以生成指定範圍內的隨機整數。請參見以下示例。

import java.util.concurrent.ThreadLocalRandom;

public class SimpleTesting{
    public static void main(String[] args) {
        int min_val = 10;
        int max_val = 100;
        ThreadLocalRandom tlr = ThreadLocalRandom.current();
        int randomNum = tlr.nextInt(min_val, max_val + 1);
        System.out.println("Random Number: "+randomNum);
    }
}

輸出:

Value in double: 12.9
Value in int: 12

使用 Java 中的 Math 類生成隨機數

Java Math 類可用於生成指定範圍內的隨機數。在這裡,我們使用 Math 類的 random() 方法來獲取隨機數。請參見下面的示例。

public class SimpleTesting{
    public static void main(String[] args) {
        int min_val = 10;
        int max_val = 100;
        double randomNum = Math.random() * ( max_val - min_val );
        System.out.println("Random Number: "+randomNum);
    }
}

輸出:

Id: 1212
Name: Samre

使用 Java 中的 Random 類生成隨機數

Java 的 Random 類可以使用 nextInt() 方法在指定範圍內生成一個隨機整數,該方法返回一個整數值。請參見下面的示例。

import java.util.Random;
public class SimpleTesting{
    public static void main(String[] args) {
        int min_val = 10;
        int max_val = 100;
        Random ran = new Random();
        int x = ran.nextInt(max_val) + min_val;
        System.out.println("Random Number: "+x);
    }
}

輸出:

Id: 1212
Name: Samre

使用 Java 中的 Random 類生成隨機數

這是用於獲取指定範圍內的隨機整數的另一種解決方案。在這裡,我們使用帶有不同引數的 Random 類的 nextInt() 方法。請參見下面的示例。

import java.util.Random;
public class SimpleTesting{
    public static void main(String[] args) {
        int min_val = 10;
        int max_val = 100;
        Random rand = new Random();
        int randomNum = min_val + rand.nextInt((max_val - min_val) + 1);
        System.out.println("Random Number: "+randomNum);
    }
}

輸出:

Random Number: 75

使用 Java 中的 Random 類和 IntStream 生成隨機數

在這裡,我們使用 Random 類的 ints() 方法,該方法返回一個隨機數流。我們使用 forEach() 方法來列印 ints() 方法生成的所有隨機整數。請參見以下示例。

import java.util.Random;
import java.util.stream.IntStream;
public class SimpleTesting{
    public static void main(String[] args) {
        int min_val = 10;
        int max_val = 100;
        Random rand = new Random();
        IntStream stream = rand.ints(5, min_val, max_val);
        stream.forEach(System.out::println);
    }
}

輸出:

94
35
90
74
47

使用 Java 中的 nextFloat 方法生成隨機數

Random 類提供了一種方法 nextFloat() 來生成一個 float 型別的隨機數。如果我們要獲取浮點型隨機數,則此方法很有用。請參見以下示例。

import java.util.Random;
public class SimpleTesting{
    public static void main(String[] args) {
        int min_val = 10;
        int max_val = 100;
        Random rand = new Random();
        float rand_val = rand.nextFloat() * (max_val - min_val);
        System.out.println(rand_val);
    }
}

輸出:

71.88764

使用 Java 中的 RandomData 類生成隨機數

如果你正在使用 apache commons 庫,請使用 RandomData 類。此類提供了一種 nextInt() 方法,該方法返回一個整數值。我們可以使用此方法來生成指定範圍內的隨機整數。請參見下面的示例。

import org.apache.commons.math.random.RandomData;
import org.apache.commons.math.random.RandomDataImpl;
public class SimpleTesting{
    public static void main(String[] args) {
        int min_val = 10;
        int max_val = 100;
        RandomData randomData randomData = new RandomDataImpl();
        int number = randomData.nextInt(min_val, max_val);
        System.out.println(number);
    }
}

輸出:

72

使用 Java 中的 SecureRandom 類生成隨機數

SecureRandom 類屬於 Java 的 security 包,用於建立安全隨機數。在這裡,我們使用 Date 類生成種子,然後使用 nextInt() 方法生成隨機整數。請參見以下示例。

import java.security.SecureRandom;
import java.util.Date;
public class SimpleTesting{
    public static void main(String[] args) {
        int min_val = 10;
        int max_val = 100;
        SecureRandom rand = new SecureRandom();
        rand.setSeed(new Date().getTime());
        int randomNum = rand.nextInt((max_val - min_val) + 1) + min_val;
        System.out.println(randomNum);
    }
}

輸出:

65

使用 Java 中的 RandomUtils 類生成隨機數

我們可以使用 apache commons 庫的 RandomUtil 類來生成隨機整數。此類的 nextInt() 方法返回一個整數類。請參見以下示例。

import org.apache.commons.lang3.RandomUtils;
public class SimpleTesting{
    public static void main(String[] args) {
        int min_val = 10;
        int max_val = 100;
        RandomUtils random = new RandomUtils();
        int randomNum = random.nextInt(min_val, max_val);
        System.out.println(randomNum);
    }
}

輸出:

66

相關文章 - Java Math

相關文章 - Java Number