【问题标题】:How to generate random words in JavaScript? [duplicate]如何在 JavaScript 中生成随机单词? [复制]
【发布时间】:2012-10-25 14:27:35
【问题描述】:

可能重复:
Getting a random value from a JavaScript array

好的,所以我在这里设置了三个变量,每个变量是石头、纸或剪刀。使用 JavaScript,如何随机生成其中一个词?

到目前为止是这样的:

<!DOCTYPE html>
<html>
    <body>
        <button type="button" onclick="myFunction()"> Click me</button>

        <script>
            function myFunction()
            {
                var c="Rock";
                var d="Paper";
                var e="Scissors";
            }
        </script>
    </body>
</html>

然后我将有一个名为 K 的变量,它将是石头纸或剪刀中的随机单词。所以它会是这样的:

alert("The computer chose: " + k);

那么如何让 JavaScript 在 cde 这三个变量之间随机选择?

【问题讨论】:

  • 将它们放入一个数组,然后从数组中选择一个随机索引。 (请查看强调的词。)
  • 鉴于 OP 在他的问题中没有数组,我认为副本的选择并不好(话虽如此,可能还有其他类似的问题)。

标签: javascript random


【解决方案1】:

用途:

var things = ['Rock', 'Paper', 'Scissor'];
var thing = things[Math.floor(Math.random()*things.length)];
alert('The computer chose:' + thing);

Demonstration


为了准确回答你的问题,假设你真的想保留你的三个全局变量,你可以这样做:

var c = "Rock";
var d = "Paper";
var e = "Scissors";
var thing = window['cde'.charAt(Math.floor(Math.random()*3))];
document.write('The computer chose: ' + thing);

Demonstration

(但不要。)

【讨论】:

    【解决方案2】:

    您可以使用Math.random() 来获取一个介于 0 和 1 之间的随机数。

    如果您想要一个介于 0 和 2 之间的完整随机数。(例如:0、1 或 2)。您可以使用:

    Math.floor(Math.random()*3);
    

    请注意,Math.round(而不是 floor)在此处会错误,因为边缘值的机会较低,您实际上也可能得到 3

    【讨论】:

      【解决方案3】:

      你应该做一个数组:

      var words = ['Rock', 'Paper', 'Scissors'];
      

      然后生成一个0到数组长度之间的随机数,小数点为0:

      var number = Math.floor(Math.random() * words.length);
      

      然后选择关键字是你刚刚创建的随机数的单词:

      var word = words[number];
      

      总共:

      var words = ['Rock', 'Paper', 'Scissors'];
      var word = words[Math.floor(Math.random() * words.length)];
      

      【讨论】:

      • -1 不是必需的。如果您添加它,它将永远不会返回Scissors,而是返回undefined
      • 事实上,如果你在代码中留下-1,你会得到大约1/words.length比例的NaN结果。我已经从最后的简短摘要中删除了 -1。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 2017-05-10
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 2016-08-01
      相关资源
      最近更新 更多