生成一个随机的四位数引脚,最后一个数字总是零

Generating a random four digit pin, last digit is always zero

本文关键字:引脚 最后一个 数字 四位 一个 随机      更新时间:2023-09-26

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

由于某些原因,最后一个数字总是0,我不知道为什么:

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

以0结尾,因为在数字的末尾有+ min, min是0。它执行的是字符串连接,而不是整数相加,所以你在末尾加了一个0。只要去掉那个位,问题就解决了。

和Buck Doyle(原谅我不知道如何链接到一个用户)是非常正确的——如果你要解析整个东西作为一个字符串,你将需要一些更多的前导零。前面的三个0将给你一个四位数的字符串,即使你随机化了一个1。

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

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

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

" + min "导致末尾的零追加。