【问题标题】:JS: Math.random for arrayJS:数组的 Math.random
【发布时间】:2010-12-03 18:05:52
【问题描述】:

本周学习 JS。

是否可以使用 Math.random 在数组中返回随机值?该值是否是一个字符串并且仍然有效?

【问题讨论】:

    标签: javascript arrays string return call


    【解决方案1】:

    您可以获取浮点数(介于 0 和 1 之间,不包括在内)并将其转换为数组的索引(介于 0 和数组长度 - 1 之间的整数)。例如:

    var a = ['a', 'b', 'c', 'd', 'e', 'f'];
    var randomValue = a[Math.floor(a.length * Math.random())];
    

    【讨论】:

    • 谢谢!我在每个数组值中使用了更长的语句字符串。有没有办法在语法上写这个,所以它不仅仅是一个非常大的行?
    • 如何构造数组并不重要。重要的部分是floor(length_of_the_array * random_value_between_0_and_1)
    【解决方案2】:

    是的,这确实是可能的。下面是一些示例代码:

    <script>
        var arr = new Array('a', 'b', 'c', 'd', 'e');
        document.write("Test " + arr[Math.floor(Math.random() * ((arr.length - 1) - 0 + 1))]);
    </script>
    

    请注意,应使用 Math.floor 而不是 Math.round,以获得均匀的数字分布。

    【讨论】:

      【解决方案3】:

      阅读:

      var arr = [1, 2, 3, 4, 5, 6];
      var r = arr[Math.floor(Math.random()*a.length)]; // r will store a value from a pseudo-random position at arr.
      

      【讨论】:

      • Math.round(Math.random()*a.length) 可以返回一个等于 a.length 的数字,它不是数组的有效索引。
      • 请检查它不是 a*length 它将是 arr.length
      【解决方案4】:

      感谢您的所有帮助。

      //My array was setup as such.
      var arr = New Array();
      arr[0]="Long string for value.";
      arr[1]="Another long string.";
      //etc...
      

      在您的帮助下,由于我知道数组 (2) 中值的确切数量,所以我这样做了:

      var randomVariable = arr[Math.floor(2*Math.random())]
      

      然后按照我的意愿输出randomVariable。

      谢谢!

      【讨论】:

      • 你应该使用arr.length,而不是2
      【解决方案5】:

      你可以用这个:

      var array = [];
      for(i = 0; i < 6; i++) {
      array[i] = Math.floor( Math.random() * 60 );
      }
      

      如果您需要 1 到 100 之间的数字,只需将 Math.random() * 60 更改为 Math.random() * 100。

      【讨论】:

        【解决方案6】:

        是的,很有可能按照您的要求进行操作

        const diceRoll = Array.from({ length: 100 }, (_, i) => {
        return i + 1;
        });
        
        console.log(Math.random() * diceRoll.length);
        

        那里的代码,为什么它起作用的原因是 Math.random 返回一个介于 0 和我们设置的任何值之间的随机数,我们在这里设置的值是 diceRoll.length,即 100,因此它将返回一个介于 0 和 99 之间的随机值

        console.log(Math.random() * diceRoll.length + 1);
        

        将使其返回 0 到 100 之间的随机值

        【讨论】:

          猜你喜欢
          • 2018-08-22
          • 2015-08-13
          • 2015-01-07
          • 2011-08-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多