在Adobe Acrobat中使用Javascript生成5个随机数字

在Adobe Acrobat中使用Javascript生成5个随机数字,javascript,pdf,adobe,acrobat,Javascript,Pdf,Adobe,Acrobat,我使用的是if(this.getField(“表单号”).valueAsString==”){ this.getField(“表单号”).value=util.printf(“%05d”,Math.floor((Math.random()*99999)+1000)); } 试图在打开时用PDF中的随机5位数字填充文本字段。它似乎生成的数字范围为5-6位,而不是5位 我做错了什么 谢谢你的回复。很抱歉,我对javascript非常缺乏经验。我想你的意思是: 函数getrandomArbital(m

我使用的是
if(this.getField(“表单号”).valueAsString==”){
this.getField(“表单号”).value=util.printf(“%05d”,Math.floor((Math.random()*99999)+1000));
}

试图在打开时用PDF中的随机5位数字填充文本字段。它似乎生成的数字范围为5-6位,而不是5位

我做错了什么

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

函数getrandomArbital(min,max){return Math.random()*(max-min)+min;}

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

表达式
rnd()*99999
将为您提供一个范围
0..99999
内的数字(此处的所有范围在下端包含,在上端独占,因此此范围不包括
99999
)。当您将
1000
添加到该值时,您将得到一个范围为
1000..100999
的数字

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

如果您要查找的是一个没有前导零的五位数,那么您应该得到一个范围为0..90000
的数字,然后加上10000将其转换为
10000..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到99999之间的5位数字,则需要保留前导零

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


console.log(Math.random().toFixed(5).替换(/\d\。/,'')
您正在添加1000个可能的重复项,在重复问题中使用算法,最小值为
10000
,最大值为
99999
。如果您对前导零没有意见,请使用
0
作为最小值。谢谢您的回复。很抱歉,我对javascript非常缺乏经验。我假设你们的意思是:函数getrandomArbitral(min,max){return Math.random()*(max-min)+min;}但我如何将它放在我自己的代码中,10000作为min,99999作为max呢?“但我如何将它放在我自己的代码中呢”-只要定义
getrandomArbitral()
函数并用这些值调用它:
GetRandomArbital(10000,99999)
。谢谢你,伙计,所以使用:'Math.floor(Math.random()*90000)+10000'应该会给我一个随机5位数的结果?@christo,是的,假设你定义了“5位数”是两端的
10000
99999
范围。但是,我仍然建议使用
getRangeVal()
函数,这样您就不必再考虑这个问题了。生命太短暂了,不能在你的职业生涯中一遍又一遍地写同样的代码:-)谢谢。你说的90%对我来说没有多大意义,因为我对JS的经验几乎为零。如果`'Math.floor(Math.random()*90000)+10000'
能满足我的需要,我不知道为什么我会使用
getRangeVal()
。我甚至不知道如何添加:
strVal=util.printf(“%5d”,getRangeVal(10000,99999));strVal=util.printf(“%05d”,getRangeVal(099999));`不管怎样,我的代码。。我是个彻头彻尾的笨蛋,但真的很感谢你的帮助!没关系,@christo,在结尾用“底线”这个词就行了。关于如何使用
util.printf
,请按照当前问题中的操作使用它,将其分配给
formnumber
字段值。但是,如果您更喜欢使用简单的计算,而不是函数,那很好。在这种情况下,它也同样有效。