TL; DR
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
Rastgele sayı almak için
generateRandomInteger(-20, 20);
AŞAĞIDAKİ AÇIKLAMA
Biz rastgele bir tamsayı olsun demek gerekir X minimum ve maksimum arasında.
Sağ?
yani
min <= X <= maks
Denklemden min çıkarırsak, bu eşittir
0 <= (X - dak) <= (maks - dak)
Şimdi, bir rastgele sayı ile çarpın bu olanak r
olduğunu
0 <= (X - dak) * r <= (maks - dak) * r
Şimdi, denkleme min ekleyelim
min <= min + (X - min) * r <= min + (max - min) * r
Şimdi, r ile sonuçlanan, [min, maks] denklem aralığımızı karşılayacak bir fonksiyon seçelim. Bu sadece 0 <= r <= 1 ise mümkündür
TAMAM. Şimdi, r yani [0,1] aralığı Math.random () fonksiyon sonucuna çok benzer. Öyle değil mi?
Math.random () işlevi, [0, 1) aralığında kayan noktalı, sahte rasgele bir sayı döndürür; yani 0 (dahil) ile 1 (hariç) arasında
Örneğin,
Durum r = 0
min
+ 0 * ( max
- min
) = dk.
Durum r = 1
min
+ 1 * ( max
- min
) = maks.
Math.random 0 <= r <1 kullanan Rastgele Durum
min
+ r * ( max
- min
) = X ; burada X , min <= X < maks aralığına sahiptir
Yukarıdaki X sonucu rastgele bir sayısaldır. Ancak Math.random () nedeniyle sol sınırımız kapsayıcıdır ve sağ sınır münhasırdır. Sağ sınırımızı dahil etmek için sağ sınırı 1 arttırır ve sonucu ortaya koyarız.
function generateRandomInteger(min, max) {
return Math.floor(min + Math.random()*(max + 1 - min))
}
Rastgele sayı almak için
generateRandomInteger(-20, 20)
;