2014-12-07 116 views
1

所以我想讓我的代碼得到一個基於用戶輸入的隨機數生成。而我目前的聲明並沒有產生適當的範圍。獲取用戶輸入的範圍內的隨機生成

secretNum = low + (int)(Math.random()* max); 

其中低位是範圍的最低部分,高位是最高位置。例如。如果低爲5,高爲10,這是否會產生1-50的範圍? (5 * 10)。

回答

0

必須使用這 -

secretNum = min + (int)(Math.random() * ((max - min) + 1));  

如果低爲3,例如,高爲7,隨機數將是要麼-3,4,5,6-或7

0

我想用這個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; 

這可能要做到這一點最簡單的方法。

1

您保存在變量in用戶輸入:

String in = sc.nextLine(); 

然後創建的java.util.Random一個實例與種子作爲輸入的哈希:

Random r = new Random(in.hashCode()); 

int randomNumber = r.nextInt(); 

如果你想生成一個最大值和最小值之間的隨機數看到this Questionthis one但你需要將C++轉換成的java:

C++:

output = min + (rand() % (int)(max - min + 1)) 

爪哇:

output = min + (r.nextInt() % (max - min + 1)) 
相關問題