我正在尝试执行以下代码:
var a = Math.floor(100000 + Math.random() * 900000);
a = a.substring(-2);
我在第 2 行收到类似 undefined is not a function
的错误,但是当我尝试执行 alert(a)
时,它有一些东西。这里出了什么问题?
最佳答案
这是因为 a
是一个数字,而不是一个字符串。您可能想做的是这样的:
var val = Math.floor(1000 + Math.random() * 9000);
console.log(val);
-
Math.random()
将生成 [0, 1) 范围内的 float (这不是拼写错误,它是标准数学符号,表明 1 被排除在该范围之外) . - 乘以 9000 的结果范围为 [0, 9000)。
- 将 [1000, 10000) 范围内的 1000 个结果相加。
- Flooring 将小数部分去掉,得到一个整数。请注意,它不会四舍五入。
一般情况
如果要生成[x,y)范围内的整数,可以使用以下代码:
Math.floor(x + (y - x) * Math.random());
关于javascript - 使用子字符串生成 4 位随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29640432/