加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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左右.

Returns:

a pseudorandom double greater than or equal to 0.0 and less than 1.0.

如果将最大可能结果乘以27并通过强制转换为int来截断它,则得到26.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读