2010-11-23 9 views

Antwort

13

Math.random() wird eine Zahl zwischen 0 und 1.

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

@ DenisGorbachev Aussage falsch ist. Math.random() gibt 0 einschließlich zu 1 exklusiv zurück, also nie 1,00. Wenn dies der Fall wäre, wäre der zurückgegebene Index größer als die Array-Länge. – Kelly

+0

Omg, du hast Recht. –

-16

Nur mit Hilfe der Array-Länge führen in nie wirklich die Auswahl das letzte Element einen Blick erzeugen im Array, außer in der extrem seltenen Situation, wenn die gewählte Zufallszahl 1,0000 ist. Bessere 0,99999 zum arr.length hinzuzufügen:

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

Dies hat das Potenzial, eine Zahl größer als der letzte Index zurückzugeben. – Kelly

+0

Math.random() Gibt eine Zahl zwischen 0 und 1 (NIEMALS 1). Geschrieben als [0, 1). Auch das Hinzufügen von 0.9999999 zu der Array-Länge verursacht einen möglichen Fehler außerhalb der Grenzen. Schau dir die gewählte Antwort an –

Verwandte Themen