2012-11-05 49 views
3

可能重複:
Getting a random value from a JavaScript array如何在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變量,這將是隨機字出石頭紙或剪刀。所以它會像這樣:

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

所以,我怎樣才能使JavaScript中的三個變量,cde之間隨機選擇?

+4

將它們放入一個*數組*然後從數組中選擇一個*隨機索引*。 (請查看強調詞。) – 2012-11-05 17:40:58

+2

看看@ http:// stackoverflow。com/questions/4550505 /從數組中獲得隨機值 –

+0

鑑於OP在他的問題中沒有數組,我認爲重複的選擇並不是很好(可以這麼說,可能還有其他的類似的問題)。 –

回答

14

用途:

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()得到一個隨機數beteween 0和1

如果你想0和2(所以之間的整數隨機數:0,1或2)。您可以使用:

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

注意Math.round(而不是floor)將錯誤在這裏,因爲邊緣值將有機會較低,而你實際上可能得​​到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 - 1)]; 
+2

'-1'不是必需的。如果添加它,它永遠不會返回'Scissors',而是返回'undefined'。 – Matthew