前言
我們在學習 Java 基礎時就知道可以生成亂數,可以為我們枯燥的學習增加那么一丟丟的樂趣,本文就來介紹 Java 亂數,
一、Random類介紹
在 Java 中使用 Random 工具類來生成亂數,該類在 java.util 包下,在 JDK1.0 版本就存在了,Random 單詞本身就是隨機、隨意、任意的意思,Random 是一個普通類,所以在使用時需要創建 Random 物件,在呼叫其提供的方法,
public class Random implements java.io.Serializable {}
Random 類提供了諸多方法,如下圖:

二、Random類生成亂數
1.生成亂數
在 Java 中,可以使用 java.util.Random 類來生成亂數, Random 類提供了多個方法來生成不同種類的亂數,例如 nextInt()、nextDouble() 等,
我們這里演示如何生成一個介于0到9之間的隨機整數:
import java.util.Random;
public class RandomTest {
public static void main(String[] args) {
// 創建Random實體
Random random = new Random();
// 生成0到9之間的亂數
int randomNum = random.nextInt(10);
System.out.println(randomNum);
}
}
在上面的示例代碼中,首先創建了一個 Random 物件,然后使用 nextInt() 方法生成一個介于0到9之間的隨機整數,并將結果列印到控制臺上,
2.nextInt()方法
nextInt(int bound) 方法是 Random 類的一個實體方法,它用于生成一個介于0(包括0)和指定值(不包括該值)之間的隨機整數,
我們之前使用 nextInt(int bound) 方法生成 0-9 之間的亂數:
Random random = new Random();
int randomNum = random.nextInt(10);
System.out.println(randomNum);
代碼中使用 Random 類的默認建構式創建一個亂數生成器物件,然后呼叫 nextInt(int bound) 方法生成介于 0(包括 0)和 10(不包括 10)之間的隨機整數(多次提及且加粗),最后將結果存盤到 randomNum 變數中并列印到控制臺上,
這個方法的實作原理是根據亂數生成器的內部狀態生成亂數,如果指定的 bound 引數是正數,則生成的亂數即為 0 到 bound 之間的某個整數,如果 bound 是負數或者 0,則會拋出 IllegalArgumentException 例外,需要注意的是,生成的亂數是偽亂數,其實際上是一個確定性的函式,但是它的表現看上去是隨機的,
對于 Random.nextInt(int bound) 方法,需要特別注意 bound 引數的取值范圍,如果生成的亂數不是 0 到 bound 之間,那么就可能會對一些應用產生負面影響,比如在密碼學應用中可能會導致漏洞,因此,在使用該方法時,需要仔細檢查 bound 引數的取值范圍,并對其進行適當的限制,
那么除了 nextInt() 方法,還有 nextLong()、nextBoolean()、nextFloat()、nextDouble() 等,
三、使用場景
Java 亂數生成器可以在很多場景下使用,比如在游戲開發中,可以隨機生成怪物、地圖、道具等;如果涉及密碼,可以在加密程序中需要生成亂數,如在生成密鑰的時候生成長度隨機的鹽值;也可以進行測驗和演練:可以使用亂數生成器來生產測驗資料、觀測資料等等;
總之,亂數的使用非常廣泛,任何需要模擬隨機的場景都可以使用 Java 提供的亂數生成器生成亂數,
我們大都有選擇困難癥,比如不知道午飯吃什么?很頭疼!那就讓上天來決定吧!我們使用 Java 亂數來隨意抽取或是決定午飯,
import java.util.Random;
public class RandomLunch {
public static void main(String[] args) {
String[] foods = {"漢堡", "炸雞", "披薩", "烤肉", "牛肉面", "米線", "酸菜魚", "煲仔飯", "火鍋", "小籠包"}; //可以選擇的午餐品種
Random random = new Random();
int index = random.nextInt(foods.length); // 生成0到可選菜品數量之間的一個隨機整數
String lunch = foods[index]; // 根據亂數選定菜品
System.out.println("午飯吃" + lunch);
}
}
上面的代碼中,首先定義了一個陣列中,存盤了可以選擇的午餐品種,然后使用 java.util.Random 類創建一個亂數生成器物件,使用 nextInt(int bound) 方法生成一個介于 0 和可選菜品數量之間的亂數,最后,使用這個亂數從菜品陣列中選擇一個菜品,將其存盤到字串變數 lunch 中,并輸出午餐的選擇結果,
在實際開發中,可以將類似的代碼集成到提供菜品選擇功能的系統中,方便辦公室的小伙伴們快速決定午餐,
四、官方提示
java.util.Random 的實體是執行緒安全的,但是,跨執行緒并發使用同一個 java.util.Random 實體可能會遇到爭用,從而導致性能下降,考慮在多執行緒設計中使用 java.util.concurrent.ThreadLocalRandom,
java.util.Random 的實體不是加密安全的,請考慮使用 java.security.SecureRandom 來獲得加密安全的偽亂數生成器,以供對安全性敏感的應用程式使用,
總結
Java 亂數的使用場景還是很多的,所以我們要對其進行掌握,本文對 Java 生成亂數的類 Random 進行了簡單介紹,如果想深入了解,要查看其原始碼,去實操,去探究,
關注公眾號:編程火箭車
我們定期發布編程相關的文章、資訊、活動等內容,幫助編程愛好者、初學者或初級程式員快速入門、打牢基礎,歡迎大家關注,和我們一起探索編程的精彩世界,
本文來自博客園,作者:Ongoing蝸牛,轉載請注明原文鏈接:https://www.cnblogs.com/coding-rocket/p/17428509.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/553261.html
標籤:Java
上一篇:Java配置執行緒池
下一篇:返回列表
