生成一个随机的四位数引脚,最后一位数始终为零

时间:2014-05-13 04:11:20

标签: javascript random

我尝试使用Javascript在0000和9999之间生成四位数的密码。我自然会遇到这样的问题,会生成像403这样的数字,因此所有内容都以0为前缀,然后我使用substr来获取最后四位数字。

出于某种原因,最后一个数字始终为零,我不明白为什么:

function generatePin () {
    min = 0,
    max = 9999;
    return ("0" + Math.floor(Math.random() * (max - min + 1)) + min).substr(-4);
}

运行10次的输出是:

2200
1070
9370
4870
5190
5490
5240
7410
1190
0220
2310

3 个答案:

答案 0 :(得分:5)

它以0结尾,因为在你的号码末尾你有+ min,而min是0.它正在执行字符串连接,而不是整数加法,所以你在零到头的时候。只需删除该位即可解决问题。

而Buck Doyle(原谅我不知道如何链接到用户这一事实)是非常正确的 - 如果你要将整个事情解析为一个字符串,你就是'我需要一些更多的前导零。即使你随机分配1,前面的三个零也会给你一个四位数的字符串。

答案 1 :(得分:2)

Math.random().toString().substr(2,4)

答案 2 :(得分:1)

你可以使用一对括号来超越它。

function generatePin () {
    min = 0,
    max = 9999;
    return ("0" + (Math.floor(Math.random() * (max - min + 1)) + min)).substr(-4);
}

" + min"导致尾随零附加。