java – Math.random()如何生成超出“原生”范围的随机数?
发布时间:2020-12-15 02:04:24 所属栏目:Java 来源:网络整理
导读:据我所知,Math.random()本身会生成0.0到1.0之间的随机双精度,包括0.0但不包括1.0.我也明白,转换为int会截断小数点后的所有内容而不进行舍入. 我不明白的是怎么样 System.out.println((int)(Math.random() * 27)); 实际上可以产生一个从0到26的随机数.由于Mat
据我所知,Math.random()本身会生成0.0到1.0之间的随机双精度,包括0.0但不包括1.0.我也明白,转换为int会截断小数点后的所有内容而不进行舍入.
我不明白的是怎么样 System.out.println((int)(Math.random() * 27)); 实际上可以产生一个从0到26的随机数.由于Math.random()本身只生成0.0到0.9,而9 * 27是24.3,看起来上面的代码应该能够生成的最大int是24.这有用吗? 通过搜索答案,我发现有更好的方法来生成随机数,但我正在编写的这本书描述了这种特殊的方法,我想了解它是如何工作的. 解决方法Math.random() 的范围不是0.0到0.9,它是0.0到最大可能的双倍小于1.0,大约是0.9999999999999999左右.
如果将最大可能结果乘以27并通过强制转换为int来截断它,则得到26. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |