我已经查看了其他一些问题,但他们都有脱节和confusing个答案。
我希望有一个随机的6位数字,大部分时间这个脚本都可以工作 - 但是它确实会产生7位数字,大约20%的时间。
Math.floor((Math.random() * 999999) + 100000)
我的问题:
请不要建议使用子字符串或类似的东西,因为它有点像黑客
答案 0 :(得分:5)
这是一个简单的计算范围错误。注意:下面的文字使用[
和]
代表包含范围,(
或)
代表独占范围。
要获得整数数学中等于[100000,1000000]的范围[100000,999999],您需要得到[0,900000]范围内的数字,然后加上100000,例如
Math.floor(900000 * Math.random()) + 100000
因子是900000而不是899999,因为Math.random()
函数产生的数字在[0,1]范围内,即不包括1本身。
答案 1 :(得分:1)
问题在于你的数学。
Math.random
产生一个从0.0到1.0的浮点数。在最坏的情况下,您将1.0乘以999999并再添加100000。这导致1099999.0(最大的情况)。
此行应始终生成一个6位数字
Math.floor((Math.random() * 899999) + 100000)