2010-11-23 14 views

答えて

13

Math.random()だけが決して実際に最後の項目を選択していないになります配列の長さを使用して0と

var key = Math.floor(Math.random() * arr.length); 
+9

@ DenisGorbachevのステートメントが正しくありません。 Math.random()は、排他的に1を含む0を返し、決して1.00を意味しません。もしそうであれば、返されるインデックスは配列の長さより大きくなります。 – Kelly

+0

おっと、そうです。 –

-16

を持っています選択された乱数が1.0000である非常にまれな状況を除いて、配列内にあります。 arr.lengthに.99999を追加すると良いでしょう。

var key = Math.floor(Math.random() * (arr.length + .999999)) 
+4

これは最後のインデックスよりも大きな数値を返す可能性があります。 – Kelly

+0

Math.random()0から1の前のいずれかに数字を与えます(NEVER 1)。 [0、1]と書かれています。また、配列の長さに0.9999999を追加すると、範囲外のエラーが発生する可能性があります。選ばれた答えを見てください –

関連する問題