Java產生隨機數的方法:先在程式類別開始之前放入import語句;然後建立一個Random物件;最後從某個範圍中挑選隨機數即可。
本文操作環境: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中文網其他相關文章!