我想在卡组中生成随机数(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