2010-11-23 28 views

cevap

13

Math.random() Sadece asla Aslında geçen öğeyi seçerek neden olacaktır dizi uzunluğunu kullanarak 0 ile

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

DenisGorbachev ifadesi yanlıştır @. Math.random(), 1'e 1, yani hiçbir zaman 1,00'e karşılık gelir. Olsaydı, döndürülen dizin dizi uzunluğundan daha büyük olurdu. – Kelly

+0

Omg, haklısın. –

-16

mı olacak Dizide, rastgele sayının 1.0000 olduğu son derece nadir durumlar dışında. Daha iyi arr.length için .99999 eklemek için:

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

Bu, son dizinden daha büyük bir sayı döndürme potansiyeline sahiptir. – Kelly

+0

Math.random() 0 ile 1 arasında bir yerde bir sayı verir (NEVER 1). [0, 1] olarak yazılmıştır. Ayrıca, dizi uzunluğuna 0.9999999 eklenmesi olası bir sınır hatası hatasına neden olur. Seçilen cevaba bakın –