JavaScript表达式可在每种情况下生成5位数字


69

对于我的硒测试,在每种情况下我都需要一个值提供程序来获取5位数字。javascript的问题在于的apiMath.random仅支持生成0.起始浮点数。因此它必须介于10000和之间99999

因此,如果它只会生成0.10000更高的值,但也会生成,这将很容易0.01000。因此这种方法不会成功:

Math.floor(Math.random()*100000+1)

是否可以在每种情况下(在表达式中)生成5位数字?

Answers:



56

是的,您可以在任何给定范围内创建随机数:

var min = 10000;
var max = 99999;
var num = Math.floor(Math.random() * (max - min + 1)) + min;

或简化:

var num = Math.floor(Math.random() * 90000) + 10000;

21

如果您想生成一个邮政编码,并且不介意前导零,只要它是5位数字,就可以使用:

(""+Math.random()).substring(2,7)

我很好奇,与其他方法相比,它的性能如何。这对我很有吸引力,但似乎字符串转换以及子字符串转换可能很昂贵。
Danation

嗯,Math.random()不能保证至少N个数字返回。我只是用firefox尝试过,(""+Math.random()).substring(2,7)可以返回3/4位数的XYZ或XYWZ。
Shunz先生2015年

我正在使用它并且在哭
Alex Shtromberg

1

您可以使用以下函数获得一个随机整数,其中包括任何给定的最小和最大数字:

function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

有关更多示例和其他用例,请查看Math.random MDN文档


0

那这个呢?

var generateRandomNDigits = (n) => {
  return Math.floor(Math.random() * (9 * (Math.pow(10, n)))) + (Math.pow(10, n));
}

generateRandomNDigits(5)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.