1

我知道我需要使用 Math.random() 来制作随机数,但是今天我尝试制作一个介于 1 和 9999 之间的随机数......(9 重复 19 次)并且我的输出总是以 3-5 个零结尾。如何生成更详细的随机数?

我做了什么:

const foo = Math.floor(Math.random() * parseInt("9".repeat(19)));

另外,我很确定我知道该怎么做,但是如果有人可以告诉我,我如何填充零以达到一定的位数?(例如 pad(15,4) 变为 0015 因为您需要多 2 位数字才能使其长 4 位数字)

4

3 回答 3

2

最好的想法可能是只使用一串随机整数(也解决填充问题):

let foo = '';
for(i=0; i<19; ++i) foo += Math.floor(Math.random() * 10);
alert(foo);

于 2019-01-28T23:12:04.907 回答
2

您需要使用编码为字符串的数字。像这样的循环:

var desiredMaxLength = 19
var randomNumber = '';
for (var i = 0; i < desiredMaxLength; i++) {
    randomNumber += Math.floor(Math.random() * 10);
}

表示为字符串的数字的算法可以通过 https://github.com/rauschma/strint 上的strint下载。

于 2019-01-28T23:25:44.687 回答
1

您遇到了 Number.MAX_SAFE_INTEGER。最大的精确整数值为 2^53-1,即 9007199254740991。

于 2019-01-28T23:07:43.537 回答