-1

可能重复:
在特定范围内的 Javascript 中生成随机数?

如果我输入长度为 4,我需要返回 0 9999 之间的数字。

我希望它是 0 填充(0004),但这可能是另一个功能。

4

6 回答 6

1
for(var x = 5, i = 0, y = ""; i < x​;​ ++i, y +​​= "9");
Math.floor(Math.random()*parseInt(y)); //random number

​ 在 for 循环中,x 将是您的输入长度。如果需要,您也可以将 x 的定义移到循环之外。

你也可以试试这个,看看哪个跑得更快(可能是第一个,fyi):

for(var x = 5, y = "", i = 0; i < x; ++i, y += Math.floor(Math.random()*9));
parseInt(y); //random number
于 2012-08-10T19:43:50.200 回答
1
function getRandom(c){
    var r = (Math.random() * Math.pow(10, c)).toFixed(0);
    while(r.length != c)
        r = "0" + r; 
    return r;
}

getRandom(3);
于 2012-08-10T19:55:02.610 回答
0

好吧,这里是数字部分。您可能可以弄清楚填充部分。

function makeNumber(number){
    var nines = "";
    var returnNumber = "";
    for(var i = 0; i < number; i++)
    {
         nines+= "9";  
    }
    for(var i = 0; i < number; i++)
    {
        var returnNumber += String(Math.Random() * parseInt(nines));
    }
    return returnNumber;
}
于 2012-08-10T19:48:54.117 回答
0

有点草率但有效:

var length = 4; //<-- or get however you want
var big = "";
for (i=0; i<length; i++) {
    big = big + "9";
}
var big = parseInt(big);
var random = Math.floor(Math.random() * big).toString();
var random_len = random.toString().length;
if (random_len < length) {
    var random_padded = random.toString()
    padding = length - random_len;
    for (i=0; i<padding; i++) {
        random_padded = "0" + random_padded;
    }
    random = random_padded
}
alert(random);
于 2012-08-10T20:02:37.580 回答
0

由于它是 javascript,因此您可能希望在这种情况下利用其弱类型。一种特殊的黑客方式是生成 0-9 之间的 n 个数字并使用字符串连接。

这篇文章似乎有答案:JavaScript 表达式在每种情况下生成一个 5 位数字 ,您可以使用连接填充。

编辑:所以这是我的实现:

function random(x){
  var rand = Math.floor(Math.random() * Math.pow(10,x));
  var dummy = rand;
  while (dummy<Math.pow(10,x-1)){
    rand = "0" + rand;
    dummy = dummy*10;
  }
  return rand;
}
于 2012-08-10T19:43:14.003 回答
0

尝试这个:

function getNumber(range){
var max = Math.pow(10,range);

var num = Math.Random() * max;
}

至于zerofill你最好尝试内森在他的评论中提出的建议

于 2012-08-10T19:46:52.430 回答