【问题标题】:javascript generate a number of a variable length [duplicate]javascript生成多个可变长度[重复]
【发布时间】:2012-08-08 03:20:49
【问题描述】:

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

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

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

【问题讨论】:

标签: javascript variables random numbers


【解决方案1】:
for(var x = 5, i = 0, y = ""; i < x​;​ ++i, y +​​= "9");
Math.floor(Math.random()*parseInt(y)); //random number

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

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

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

【讨论】:

    【解决方案2】:
    function getRandom(c){
        var r = (Math.random() * Math.pow(10, c)).toFixed(0);
        while(r.length != c)
            r = "0" + r; 
        return r;
    }
    
    getRandom(3);
    

    【讨论】:

    • 这是一个不错的解决方案,效果很好,并且内置了 0 填充。谢谢!
    【解决方案3】:

    试试这个:

    function getNumber(range){
    var max = Math.pow(10,range);
    
    var num = Math.Random() * max;
    }
    

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

      • 这可以很容易地用 1 个 for 循环来完成,并且大括号之间没有语句,请看下面我的解决方案。
      • @Nile 是的,我看到了。不错的想法。
      • @Nile 虽然在这种情况下,我们谈论的是几乎可以忽略不计的时间浪费,我认为这样阅读会更清楚
      • @PhillipSchmidt,使用int 声明“i”是怎么回事?这有效吗?
      • @Nile 大声笑我打算把它作为编辑的一部分,但后来我取消了我的编辑。现在编辑它。 (注意这是因为我整天都在写c#代码,lol)
      【解决方案5】:

      有点草率但有效:

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

      【讨论】:

        【解决方案6】:

        由于它是 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;
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-26
          • 1970-01-01
          • 1970-01-01
          • 2013-06-23
          • 1970-01-01
          • 1970-01-01
          • 2011-05-20
          • 1970-01-01
          相关资源
          最近更新 更多