簡體   English   中英

在Adobe Acrobat中使用Javascript生成5個隨機數字

[英]Generate 5 random digit number using Javascript in Adobe Acrobat

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

表達rnd() * 99999會給你范圍內的數0..99999 (這里所有范圍都在下端包容性和排他性的上部,所以這個范圍包括99999 )。 當您添加1000時,您將得到一個范圍為1000..100999

那是四位數,五位數或六位數,盡管您永遠不會看到四位數,因為您用%05d強制前導零打印它們。 但是, %05d指定了最小字段寬度,因此將使六位數的數字不變,因此為什么會看到五位數和六位數的數字。

如果您使用的是五位數后沒有前導零的數字,則應該獲取0..90000范圍內的數字, then adding ten thousand to translate that to 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使用五位數字進行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可以解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM