所以我想讓我的代碼得到一個基於用戶輸入的隨機數生成。而我目前的聲明並沒有產生適當的範圍。獲取用戶輸入的範圍內的隨機生成
secretNum = low + (int)(Math.random()* max);
其中低位是範圍的最低部分,高位是最高位置。例如。如果低爲5,高爲10,這是否會產生1-50的範圍? (5 * 10)。
所以我想讓我的代碼得到一個基於用戶輸入的隨機數生成。而我目前的聲明並沒有產生適當的範圍。獲取用戶輸入的範圍內的隨機生成
secretNum = low + (int)(Math.random()* max);
其中低位是範圍的最低部分,高位是最高位置。例如。如果低爲5,高爲10,這是否會產生1-50的範圍? (5 * 10)。
必須使用這 -
secretNum = min + (int)(Math.random() * ((max - min) + 1));
如果低爲3,例如,高爲7,隨機數將是要麼-3,4,5,6-或7
我想用這個Random object。
你喜歡這個創建它:
Random r = new Random();
然後從那裏,它是非常容易使用。對於從0(含)〜50(不含)隨機INT,只是做:
int randomNumber = r.nextInt(50);
我認爲它使這一切你要容易得多。如果用戶輸入10和140,然後你做這樣的事情:
int lowest = 10;
int highest = 140;
int randomMax = 140-10;
int randomNumber = r.nextInt(randomMax) + 10;
這可能要做到這一點最簡單的方法。
您保存在變量in
用戶輸入:
String in = sc.nextLine();
然後創建的java.util.Random
一個實例與種子作爲輸入的哈希:
Random r = new Random(in.hashCode());
int randomNumber = r.nextInt();
如果你想生成一個最大值和最小值之間的隨機數看到this Question 或this one但你需要將C++轉換成的java:
C++:
output = min + (rand() % (int)(max - min + 1))
爪哇:
output = min + (r.nextInt() % (max - min + 1))