在 Java 中,可以使用 java.util.Random 類別的實例來產生隨機數字。
可以使用nextInt()方法產生隨機整數。
這會產生一個值,範圍從Integer.MIN_VALUE到Integer.MAX_VALUE。
Random random = new Random();
random.nextInt();
// => -1169335537
若要限制產生值的範圍,請使用nextInt(int)。
這會產生一個值,範圍從0(含)到給定的上界(不含)。
例如,下面這行程式會產生一個從0到9的隨機數字。
Random random = new Random();
random.nextInt(10);
// => 6
而下面這行程式則會產生一個從10到19的隨機數字。
Random random = new Random();
10 + random.nextInt(10);
// => 11
可以使用nextDouble()方法產生隨機浮點數。
這會產生一個值,範圍從0.0到1.0。
Random random = new Random();
random.nextDouble();
// => 0.19250004204021398
而下面這行程式則會產生一個從100.0到200.0的隨機數字。
Random random = new Random();
100.0 + 100.0 * random.nextDouble();
// => 111.31849856260328
瑪麗是電視影集 Star Trek: The Next Generation 的超級粉絲。 她經常玩紙筆角色扮演遊戲,在遊戲中她和朋友們假扮成 Starship Enterprise 的船員。 瑪麗的角色是 Picard 艦長,這表示她得負責記錄艦長日誌。 她喜歡遊戲中發揮創意的部分,但不喜歡臨時隨機產生資料。
這道練習的起始實作以java.util.Random實例作為建構子參數。
這讓這道練習的測試能傳入帶有預先定義隨機種子的實例,使測試結果可以預測。
因此,你的實作應該使用提供的java.util.Random實例。
Starship Enterprise 在航行途中會遇到許多行星。
Star Trek 宇宙中的行星會依其特性分成不同類別。
例如地球是 M 級行星。
所有可能的行星等級有:D、H、J、K、L、M、N、R、T 和 Y。
實作randomPlanetClass()方法。
它應該隨機回傳其中一個行星等級。
captainsLog.randomPlanetClass();
// => "K"
Enterprise(註冊編號NCC-1701)可不是唯一在宇宙中飛行的星艦!
當它與其他星艦會合時,瑪麗需要記錄那艘星艦的註冊編號。
註冊編號以「NCC-」開頭,後面接著1000到9999(含)之間的數字。
實作randomShipRegistryNumber()方法,讓它回傳隨機的星艦註冊編號。
captainsLog.randomShipRegistryNumber();
// => "NCC-1947"
如果日誌裡沒有日期,那還有什麼用呢?
星曆是一個浮點數。
Starship Enterprise 在 The Next Generation 第一季的冒險,發生在星曆41000.0到42000.0之間。
「4」代表 24 世紀,「1」代表第一季。
實作randomStardate()方法,讓它回傳41000.0(含)到42000.0(不含)之間的浮點數。
captainsLog.randomStardate();
// => 41458.15721310934