提问人:lezammm 提问时间:7/23/2023 更新时间:7/23/2023 访问量:93
数学 ;数学随机
Math.ceil ; Math.random
问:
这是一个非常基本的问题,我无法解决:
在 JS 中,如果我这样做:
Math.random() 我会得到 0 到 1 之间的随机数(包括 0,不包括 1)
所以,如果我做 Math.ceil(Math.random() * 100),我会得到 0 到 100 之间的随机数。我说得对吗?
如果 Math.random() 正好是 0,我将得到 0,这是我在文档中读到的可能。
但是,我到处都读到这样做“Math.ceil(Math.random() * 100)”,我会得到 1 到 100 之间的数字。
请问,有人可以澄清一下这种情况吗?
谢谢!
数学随机 () -> [0; 1] Math.ceil(Math.random()) -> [0; 100]
答:
0赞
Evert
7/23/2023
#1
Math.random()
会给你一个介于 0(含)和 1(不含)之间的随机数,但它正好是 0 的可能性非常低。
Math.ceil()
四舍五入。鉴于你得到 0 的几率非常低,你可能会从 中得到高于 0 的东西,所以几乎(但不是完全)不可能从 中得到 0。Math.random()
Math.ceil(Math.random()*100)
所以会给你一个很小的机会得到 0,但通常在 1 到 100(含)之间。Math.ceil(Math.random()*100))
通常你要做的是 ,它向下舍入。它没有这种边缘情况,因为永远不会给你,所以给你 100 分的机会永远不会很小。它始终是 0-99(含),均匀分布。Math.floor()
Math.random()
1
Math.floor(Math.random()*100))
评论
1赞
some
7/23/2023
对不起,我错误地对您投了反对票,直到几分钟后才看到它,因此在帖子被编辑之前我无法撤消它。
0赞
Evert
7/23/2023
不过,我为此获得了 2 张反对票,这很奇怪。只是人们堆积如山吗?我认为这是一个有趣的答案。跆拳道
1赞
some
7/23/2023
这是一个有趣的答案。我一定是在更换窗户时不小心投了反对票。
评论
0.9900000000000001 * 100 = 99.00000000000001
和 的上限 ,所以高于任何内容都会导致99.00000000000001
100
0.99
100
.ceil