我的任務之一我試圖生成一個16-26(包括兩個端點)之間的隨機數。我已經閱讀並嘗試了不同的方法,但出於某種原因它超出了指定的範圍。這是我的時刻:試圖在指定範圍內獲得隨機值?
int dealerHand = 16 + (int) (Math.random() * ((26 - 16) + 16));
爲什麼這是行不通的任何想法?謝謝!
我的任務之一我試圖生成一個16-26(包括兩個端點)之間的隨機數。我已經閱讀並嘗試了不同的方法,但出於某種原因它超出了指定的範圍。這是我的時刻:試圖在指定範圍內獲得隨機值?
int dealerHand = 16 + (int) (Math.random() * ((26 - 16) + 16));
爲什麼這是行不通的任何想法?謝謝!
((26 - 16) + 16)
相同(26 + (-16 + 16)
所以26 + 0
,所以現在的問題應該更加明顯:
int dealerHand = 16 + (int) (Math.random() * 26);
返回16
和42
之間的數字。
你需要做的是更接近這樣的:
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));
感謝,被更新爲答案。 – MondKin
試試這個:
Random r = new Random();
int dealerHand = 16 + r.nextInt(11);
這一定是問一百萬次...... – Henry