77

对于我的硒测试,我需要一个价值提供者来在每种情况下获得一个 5 位数字。javascript 的问题在于 apiMath.random只支持生成0.起始浮点数。所以它必须在10000和之间99999

所以如果它只生成0.10000和更高会很容易,但它也会生成0.01000. 所以这种方法没有成功:

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

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

4

5 回答 5

184

关于什么:

Math.floor(Math.random()*90000) + 10000;
于 2010-02-01T08:51:37.853 回答
58

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

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

或简化:

var num = Math.floor(Math.random() * 90000) + 10000;
于 2010-02-01T08:49:52.657 回答
21

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

(""+Math.random()).substring(2,7)
于 2010-02-01T11:58:18.510 回答
2

那这个呢?

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

generateRandomNDigits(5)

于 2020-07-16T20:36:31.853 回答
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 文档

于 2016-08-04T23:20:35.890 回答