javascript生成一些可变长度

时间:2012-08-10 19:38:13

标签: javascript variables random numbers

  

可能重复:
  Generating random numbers in Javascript in a specific range?

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

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

6 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);

答案 2 :(得分:0)

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

这篇文章似乎有答案:JavaScript expression to generate a 5-digit number in every case你可以填充连接。

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

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;
}

答案 3 :(得分:0)

试试这个:

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

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

至于zerofill,你最好不要尝试内森在评论中提出的建议this

答案 4 :(得分: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;
}

答案 5 :(得分: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);