我正在尝试为卡片中的卡片生成随机数字(2-14)但是,当我运行程序时,我有时会得到15.有人可以解释我做错了吗?
dealer1= (int) (Math.random() *14+2);
dealer2= (int) (Math.random () *14+2);
player1= (int) (Math.random () *14+2);
player2= (int) (Math.random () *14+2);
答案 0 :(得分:1)
Math.random()
返回介于0.0(含)和1.0(不包含)之间的值。
假设我们滚动0.99,所以我们得到13,86。所以15,86。圆形到整数,即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;
答案 1 :(得分:1)
那是因为当你将浮点数转换为整数时,它会向下舍入(它会被抛弃)。
假设您的Math.random() * 14
返回13.9
在您的示例中,您为结果添加2,因此值现为13.9 + 2 = 15.9
完成所有操作后,该值将被强制转换为int。
这最后的四舍五入是为什么你有时会得到15,因为15.9的下降是15。
此示例应该可以帮助您了解发生了什么: https://repl.it/NjUT