您好,登錄后才能下訂單哦!
Java生成隨機數的案例?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純热?,讓我們一起來看看吧?/p>
生成一系列隨機數是不時出現(xiàn)的常見任務之一。在Java中,只需使用java.util.Random類即可實現(xiàn)。
與使用任何API 類一樣,第一步是在程序類開始之前放入import語句:
import java.util.Random;
接下來,創(chuàng)建一個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日以來的當前時間(以毫秒為單位)。通常,這將為大多數目的產生足夠隨機的數字。但是,請注意,在同一毫秒內創(chuàng)建的兩個隨機數生成器將生成相同的隨機數。
對任何必須具有安全隨機數生成器的應用程序(例如,賭博程序)使用Random類時也要小心。可以根據應用程序運行的時間猜測種子數。通常,對于隨機數絕對關鍵的應用程序,最好找到Random對象的替代方案。對于大多數只需要某個隨機元素的應用程序(例如,棋盤游戲的骰子),它可以正常工作。
感謝各位的閱讀!看完上述內容,你們對Java生成隨機數的案例大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。