學習軌道
/
Java
Java
/
練習
/
艦長日誌
艦長日誌

艦長日誌

學習練習

簡介

隨機性

在 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 艦長,這表示她得負責記錄艦長日誌。 她喜歡遊戲中發揮創意的部分,但不喜歡臨時隨機產生資料。

Note

這道練習的起始實作以java.util.Random實例作為建構子參數。 這讓這道練習的測試能傳入帶有預先定義隨機種子的實例,使測試結果可以預測。

因此,你的實作應該使用提供的java.util.Random實例。

1. 隨機產生一顆行星

Starship Enterprise 在航行途中會遇到許多行星。 Star Trek 宇宙中的行星會依其特性分成不同類別。 例如地球是 M 級行星。 所有可能的行星等級有:D、H、J、K、L、M、N、R、T 和 Y。

實作randomPlanetClass()方法。 它應該隨機回傳其中一個行星等級。

captainsLog.randomPlanetClass();
// => "K"

2. 隨機產生星艦註冊編號

Enterprise(註冊編號NCC-1701)可不是唯一在宇宙中飛行的星艦! 當它與其他星艦會合時,瑪麗需要記錄那艘星艦的註冊編號。

註冊編號以「NCC-」開頭,後面接著1000到9999(含)之間的數字。

實作randomShipRegistryNumber()方法,讓它回傳隨機的星艦註冊編號。

captainsLog.randomShipRegistryNumber();
// => "NCC-1947"

3. 隨機產生星曆

如果日誌裡沒有日期,那還有什麼用呢?

星曆是一個浮點數。 Starship Enterprise 在 The Next Generation 第一季的冒險,發生在星曆41000.0到42000.0之間。 「4」代表 24 世紀,「1」代表第一季。

實作randomStardate()方法,讓它回傳41000.0(含)到42000.0(不含)之間的浮點數。

captainsLog.randomStardate();
// => 41458.15721310934
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Java Exercism

準備好開始 艦長日誌 了嗎?

註冊 Exercism,透過 26 個概念158 個練習 和真人引導來學習並精通 Java,全部免費。