我正在使用下面的代码生成一个随机数。结果输出的长度应为21,前缀以“ 01”开头
postman.setGlobalVariable('RandomOrderId', "01"+ Math.floor(Math.random() * 1234567890123456789));
但是,有时它会生成长度为20、19等的输出。如何确保它始终生成长度为21且前缀为“ 01”的随机数?
答案 0 :(得分:1)
Math.random为您提供0到1之间的随机数,再乘以一百万就可以得到介于零到一百万之间的某个值。如果要允许前导数字,则可以将数字转换为字符串,并添加必要数量的前导零,如果可以的话。否则,您可以生成0到9之间的21个随机数,并将它们组合成一个随机的巨大数(也可以有前导零)。
代码可能看起来像这样:
var s = "01";
for(var i = 0; i < 21; i++) {
s = s + Math.floor(Math.random() * 10);
}
console.log(s);
答案 1 :(得分:0)
尝试注入此JS:
var len = 21;
parseInt((Math.random() * 20 + 1) * Math.pow(20,len-1), 20);
答案 2 :(得分:0)
使用以下内容
postman.setGlobalVariable('RandomOrderId', "01"+ Math.floor(1000000000000000000 + Math.random() * 1000000000000000000));
使用以下内容进行验证
function getRandomInt() {
return ( "01" + Math.floor(1000000000000000000 + Math.random() * 1000000000000000000));
}
console.log(getRandomInt());
console.log(getRandomInt());
console.log(getRandomInt());
console.log(getRandomInt());
console.log(getRandomInt());
答案 3 :(得分:0)
您还可以在Postman中使用Lodash
_.random()方法。设置范围的下限值和上限值,它将在这些值之间返回一个19位数字。 01
前缀可以直接添加到全局值。
const lowerLimit = 1000000000000000000
const upperLimit = 9999999999999999999
pm.globals.set("randomNumber", `01${_.random(lowerLimit,upperLimit)}`)
只是一种不同的方式来获得与接受的答案相同的结果。