开发者

Does math.random assume 0 to be an integer?

开发者 https://www.devze.com 2023-01-26 20:04 出处:网络
So, does int random = (int) Math.ceil(Math.random() * 5); return a value of 0,1,2,3,4 rather than 1开发者_运维技巧,2,3,4,5?

So, does int random = (int) Math.ceil(Math.random() * 5); return a value of 0,1,2,3,4 rather than 1开发者_运维技巧,2,3,4,5?

I have tried to test this, but it never seems to hit 0 or 5 =x


In theory, Math.random() will always return a value greater than or equal to 0, and strictly less than 1.

So using (int) Math.ceil(Math.random() * 5) should actually give you 0, 1, 2, 3, 4, 5. However, any value returned from Math.random() other than exactly 0 will be give a value of 1 or more after the call to Math.ceil() - so you will see 0 vanishingly often. (You'll be lucky if you ever see it, but it's definitely possible.) Seeing 5 is easy - you'll get that any time Math.random() returns a value greater than 0.8.

Is there any reason you're not using Random.nextInt() instead?

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号