在 Adob​​e Acrobat 中使用 Javascript 生成 5 个随机数字

Generate 5 random digit number using Javascript in Adobe Acrobat

我正在使用 if (this.getField("Form No").valueAsString=="") {<br> this.getField("Form No").value = util.printf("%05d", Math.floor((Math.random() * 99999) + 1000));<br> }

试图在打开 PDF 时用随机 5 位数字填充文本字段。它似乎生成了一个 5-6 位数字而不是恰好 5 位数字。

我做错了什么?

感谢回复。抱歉,我对 javascript 非常缺乏经验。我假设你的意思是:

function getRandomArbitrary(min, max) { return Math.random() * (max - min) + min; }

但是我实际上如何将它放入我自己的代码中,最小值为 10000,最大值为 99999?

表达式 rnd() * 99999 将为您提供 0..99999 范围内的数字(这里的所有范围都包括下限和 不包括 ,所以这个范围 包括 99999)。当您向其中添加 1000 时,您将得到一个 1000..100999.

范围内的数字

这是四位、五位或六位数字,但您永远不会看到四位数字,因为您使用 %05d 强制前导零打印它们。但是,%05d 指定了一个 最小值 字段宽度,因此将通过不变的六位数字,因此你会看到五位和六位数字。

如果您在一个五位数字 后没有 前导零,您应该得到一个 0..90000then adding ten thousand to translate that to10000.. 100000`,类似于:

Math.floor(Math.random() * 90000) + 10000

或者,使用广义函数:

function getRangeVal(lo, hi) {
    return Math.floor(Math.random() * (hi + 1 - lo)) + lo;
}
val = getRangeVal(10000, 99999);

后一种方法的优点是能够生成任意范围内的数字,而无需考虑太多。例如,它还可以轻松地从 0..100000 中生成一个五位数:

val = getRangeVal(0, 100000);

如果这就是您想要的(您的问题对此有点含糊,因为它都添加了一个偏移量,就好像您希望它从 10000 使用 %05d 就好像您允许数字 下面 10000).

所以,最重要的是,如果您在 10000..100000 和 `0..100000(作为填充为五个字符的字符串)中查找数字,请分别使用:

strVal = util.printf("%5d",getRangeVal(10000, 99999));
strVal = util.printf("%05d",getRangeVal(0, 99999));

如果您需要生成 0 到 99,999 范围内的 5 位数字,则需要保留前导零。

考虑使用 toFixed 来保留前导零(前提是字符串可以):

console.log( Math.random().toFixed(5).replace(/\d\./,'') );

您也可以使用一个函数来填充指定数量的前导零,但这似乎比要求的要复杂一些。

但是,如果您想要 10,000 到 99,9999 范围内的数字,paxdiablo 有答案。