2017-09-29 131 views
-3

我的任務之一我試圖生成一個16-26(包括兩個端點)之間的隨機數。我已經閱讀並嘗試了不同的方法,但出於某種原因它超出了指定的範圍。這是我的時刻:試圖在指定範圍內獲得隨機值?

int dealerHand = 16 + (int) (Math.random() * ((26 - 16) + 16)); 

爲什麼這是行不通的任何想法?謝謝!

+0

這一定是問一百萬次...... – Henry

回答

0

((26 - 16) + 16)相同(26 + (-16 + 16)所以26 + 0,所以現在的問題應該更加明顯:

int dealerHand = 16 + (int) (Math.random() * 26); 

返回1642之間的數字。

你需要做的是更接近這樣的:

int dealerHand = 16 + (int) (Math.random() * (26 - 16)); 

但提防Math.random()documentation:返回的數字是>= 0.0< 1.0。這意味着這段代碼會生成[16;26)範圍內的數字(也就是說,不包括26)。當你要包括它,這是真正的公式:

int dealerHand = 16 + (int) (Math.random() * (26 - 16 + 1)); 
+0

感謝,被更新爲答案。 – MondKin

0

試試這個:

Random r = new Random(); 
int dealerHand = 16 + r.nextInt(11);