如何在JavaScript中生成随机单词?

8

可能是重复问题:
从JavaScript数组中获取随机值

好的,我有三个变量,分别是石头,剪刀或者布。如何使用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,它将是rock(石头)、paper(布)或scissors(剪刀)中的随机单词。所以代码会是这样的:

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

那么我该如何让JavaScript在c、de三个变量之间随机选择呢?


4
将它们放入一个“数组”中,然后从数组中选择一个“随机索引”。 - user166390
2
请查看以下链接:https://dev59.com/WW855IYBdhLWcg3wFABu - Alex K.
鉴于 OP 的问题中没有数组,我认为这个重复问题选择不当(话虽如此,可能还有其他类似的问题)。 - Denys Séguret
3个回答

33

使用:

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

演示


为了精确地回答您的问题,假设您确实想保留三个全局变量,您可以这样做:

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

演示

(但是不要去看。)


4

您可以使用Math.random()函数获得0到1之间的随机数。

如果您想要一个在0到2之间的整数(即:0、1或2)。您可以使用以下代码:

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

请注意,使用floor(而不是Math.round)会更加准确,因为边缘值的概率更高,你可能会得到3

1
你应该创建一个数组:
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)];

3
不需要加上“-1”。如果添加了它,将永远不会返回“Scissors”,而是返回“undefined”。 - Matthew
事实上,如果您在代码中保留-1,大约有1/words.length的比例会得到NaN结果。我已经从结尾的简短摘要中删除了-1。 - Cameron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接