使用子字符串生成4位数的随机数

avi*_*ong 22 javascript jquery

我正在尝试执行以下代码:

var a = Math.floor(100000 + Math.random() * 900000);
a = a.substring(-2);
Run Code Online (Sandbox Code Playgroud)

undefined is not a function在第2行遇到错误,但是当我尝试做的时候alert(a),它有一些东西.这有什么不对?

Sum*_*ans 77

那是因为a是一个数字,而不是一个字符串.你可能想做的是这样的:

var val = Math.floor(1000 + Math.random() * 9000);
console.log(val);
Run Code Online (Sandbox Code Playgroud)

  • Math.random() 将生成[0,1]范围内的浮点数(注意1从范围中排除).
  • 乘以9000会得到[0,9000]的范围.
  • 添加1000个结果的范围为[1000,10000).
  • 地板砍掉十进制值以给你一个整数.请注意,它不会圆.

一般情况

如果要生成[x,y)范围内的整数,可以使用以下代码:

Math.floor(x + (y - x) * Math.random());
Run Code Online (Sandbox Code Playgroud)

  • @ 5ervant,这将是一个3位数字.(数学上,前导0并不重要.) (2认同)

小智 5

这将使用子字符串生成4位随机数(0000-9999):

var seq = (Math.floor(Math.random() * 10000) + 10000).toString().substring(1);
console.log(seq);
Run Code Online (Sandbox Code Playgroud)