繁体   English   中英

Java给我15个数字而不是随机数生成器中的14个

[英]java giving me 15 numbers instead of 14 in random number generator

我正在尝试为卡片组(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);

Math.random()返回介于0.0(含)和1.0( Math.random()之间的值。

假设我们掷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;

那是因为当您将浮点数转换为整数时,它会四舍五入(它会被下限)。

假设您的Math.random() * 14返回13.9
在您的示例中,将2加到结果中,因此该值现在为13.9 + 2 = 15.9
完成所有操作后,该值会通过强制转换为整数舍入。

最后的四舍五入是为什么有时以15结束的原因,因为15.9的四舍五入为15。

该示例应帮助您了解正在发生的事情: https : //repl.it/NjUT

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM