我想在卡組中生成隨機數(2-14)然而,當我運行程序時,我有時候會得到15個。我做錯了什麼?java給我15個數字而不是14個隨機數發生器
dealer1= (int) (Math.random() *14+2);
dealer2= (int) (Math.random() *14+2);
player1= (int) (Math.random() *14+2);
player2= (int) (Math.random() *14+2);
我想在卡組中生成隨機數(2-14)然而,當我運行程序時,我有時候會得到15個。我做錯了什麼?java給我15個數字而不是14個隨機數發生器
dealer1= (int) (Math.random() *14+2);
dealer2= (int) (Math.random() *14+2);
player1= (int) (Math.random() *14+2);
player2= (int) (Math.random() *14+2);
Math.random()
返回介於0.0(含)和1.0(不含)之間的值。
說我們滾動0.99,所以我們得到13,86。所以15,86。四捨五入爲int,這是15
請考慮使用Random相反,它有一個方法nextInt(arg)
在0..arg-1
返回隨機值:
Random random = new Random(); // preferably private, static, final, shared across your application
int dealer1 = random.nextInt(13) + 2;
int dealer2 = random.nextInt(13) + 2;
int player1 = random.nextInt(13) + 2;
int player2 = random.nextInt(13) + 2;
這是因爲,當您轉換浮點數爲整數它輪向下(它被取消)。
比方說,你Math.random() * 14
返回13.9
在你的榜樣,你加2到你的結果,因此現在的價值是13.9 + 2 = 15.9
一旦所有操作完成,該值通過轉換爲int四捨五入。
這最後捨去是爲什麼您使用的是15,有時結束了,15.9四捨五入爲15。
本示例將幫助您瞭解正在發生的事情: https://repl.it/NjUT
甚至更好'的SecureRandom。 nextInt(INT)'。 – Robert