首頁 Java java教程 Java如何產生隨機數

Java如何產生隨機數

Jan 17, 2019 am 10:13 AM

Java產生隨機數的方法:先在程式類別開始之前放入import語句;然後建立一個Random物件;最後從某個範圍中挑選隨機數即可。

Java如何產生隨機數

本文操作環境:Windows7系統、Dell G3電腦、Java8.0版。

產生一系列隨機數是不時出現的常見任務之一。在Java中,只需使用java.util.Random類別即可實作。

與使用任何API 類別一樣,第一步是在程式類別開始之前放入import語句:

 import java.util.Random;
登入後複製

接下來,建立一個Random物件:

 Random rand = new Random();
登入後複製
登入後複製

Random物件為您提供了一個簡單的隨機數產生器。物件的方法提供了選擇隨機數的能力。例如,nextInt()和nextLong()方法將分別傳回int和long資料類型的值(負數和正數)範圍內的數字:

 Random rand = new Random();
for (int j=0;j < 5;j++)
{
  System.out.printf("%12d ",rand.nextInt());
  System.out.print(rand.nextLong());
  System.out.println();
}
登入後複製

傳回的數字將隨機選擇int和long值:

-1531072189 -1273932119090680678
1849305478  6088686658983485101
1043154343  6461973185931677018
1457591513  3914920476055359941
-1128970433 -7917790146686928828
登入後複製

從某個範圍中挑選隨機數字

通常,要產生的隨機數字需要來自某個範圍(例如,包括1到40之間)。為此,nextInt()方法也可以接受int參數。它表示數字範圍的上限。但是,上限數字不包括在可以選擇的數字之一中。這可能聽起來令人困惑,但nextInt()方法從零開始工作。例如:

 Random rand = new Random();
rand.nextInt(40);
登入後複製

只會從0到39中選出一個隨機數。要從以1開頭的範圍中進行選擇,只需將1新增到nextInt()方法的結果中即可。例如,要選擇1到40之間的數字,請在結果中加上一個:

 Random rand = new Random();
int pickedNumber = rand.nextInt(40) + 1;
登入後複製

如果範圍從一個更高的數字開始,您將需要:

減去上限數字的起始編號,再加一。

將起始編號加入nextInt()方法的結果。

例如,要從5到35中選擇一個數字,上限數字將為35-5 1 = 31,並且需要將5加到結果中:

 Random rand = new Random();
int pickedNumber = rand.nextInt(31) + 5;
登入後複製

隨機類別是多麼隨機?

我應該指出,Random類別以決定的方式產生隨機數。產生隨機性的演算法是基於稱為種子的數字。如果種子數已知,那麼可以計算出將從演算法產生的數字。為了證明這一點,我將使用Neil Armstrong首次踏上月球之日的數字作為我的種子數(1969年7月20日):

 import java.util.Random;
public class RandomTest {;
  public static void main(String[] args) {
    Random rand = new Random(20071969);
    for (int j = 0; j
登入後複製

無論誰運行此代碼,生成的“隨機”數字序列將是:

 3 0 3 0 7 9 8 2 2 5
登入後複製

預設情況下,使用的種子編號由:

 Random rand = new Random();
登入後複製
登入後複製

是自1970年1月1日以來的當前時間(以毫秒為單位)。通常,這將為大多數目的產生足夠隨機的數字。但是,請注意,在同一毫秒內建立的兩個隨機數產生器將產生相同的隨機數。

對任何必須具有安全隨機數產生器的應用程式(例如,賭博程式)使用Random類別時也要小心。可以根據應用程式運行的時間猜測種子數。通常,對於隨機數絕對關鍵的應用程序,最好找到Random物件的替代方案。對於大多數只需要某個隨機元素的應用程式(例如,棋盤遊戲的骰子),它可以正常工作。

以上是Java如何產生隨機數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型? Java的類負載機制如何起作用,包括不同的類載荷及其委託模型? Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存? 如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存? Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射? 如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射? Mar 17, 2025 pm 05:43 PM

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案? 如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案? Mar 17, 2025 pm 05:46 PM

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)? 如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)? Mar 17, 2025 pm 05:45 PM

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

See all articles