首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Acrobat中的Javascript生成5个随机数字

使用Acrobat中的Javascript生成5个随机数字
EN

Stack Overflow用户
提问于 2017-03-01 01:28:05
回答 2查看 1.4K关注 0票数 0

我用的是if (this.getField("Form No").valueAsString=="") {

代码语言:javascript
复制
 `this.getField("Form No").value = util.printf("%05d", Math.floor((Math.random() * 99999) + 1000));`

}

试图在打开时用PDF中的随机5位数填充文本字段。它似乎产生一个从5-6位数不等的数字,而不是精确的5位数。

我做错了什么?

谢谢你的雷亚尔。对不起,对于javascript,我非常缺乏经验。我猜你是说:

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

但是,我如何在自己的代码中使用10000作为最小值,99999作为最大值呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-01 01:41:31

表达式rnd() * 99999将在范围0..99999中给出一个数字(这里的所有范围在下端都是包含的,在上面是排他的,所以这个范围不包括99999)。当您将1000添加到这个值中时,您将得到范围1000..100999中的一个数字。

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

如果您所追求的是一个没有前导零的5位数字,则应该得到0..90000then adding ten thousand to translate that to10000.1000000‘范围内的数字,如下所示:

代码语言:javascript
复制
Math.floor(Math.random() * 90000) + 10000

或者,使用一个通用函数:

代码语言:javascript
复制
function getRangeVal(lo, hi) {
    return Math.floor(Math.random() * (hi + 1 - lo)) + lo;
}
val = getRangeVal(10000, 99999);

后一种方法的优点是可以在任意范围内生成数字,而不必考虑太多。例如,它还可以轻松地从0..100000执行一个五位数的数字,其中包括:

代码语言:javascript
复制
val = getRangeVal(0, 100000);

如果这就是您想要的(您的问题在这一点上有点模糊,因为它都添加了一个偏移量,就好像您希望它从10000开始,并且使用%05d,就好像允许10000以下的数字一样)。

因此,底线是,如果您在10000..100000和‘0.100000(作为字符串填充到五个字符)中的数字后面,分别使用:

代码语言:javascript
复制
strVal = util.printf("%5d",getRangeVal(10000, 99999));
strVal = util.printf("%05d",getRangeVal(0, 99999));
票数 1
EN

Stack Overflow用户

发布于 2017-03-01 01:47:47

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

考虑使用toFixed来保留前导零(如果字符串是OK的):

代码语言:javascript
复制
console.log( Math.random().toFixed(5).replace(/\d\./,'') );

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

然而,如果你想要的数字在10,000到99,9999之间,帕克斯辉密罗有答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42521646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档