Véletlenszerű módszer
A JavaScript Math.random()
módszer kiváló beépített módszer véletlenszerű számok előállítására. A Math.random()
végrehajtáskor egy véletlenszerű számot ad vissza, amely 0 és 1 között lehet. A 0 benne van, az 1 pedig kizárt.
Véletlenszerű lebegőpontos szám generálása 0 és 1 között
A Math.random()
módszer egy lebegőpontos (tizedes) számot ad vissza, amely nagyobb vagy egyenlő 0-val és kisebb (de soha nem egyenlő) 1. Más szóval 0 <= x < 1
. Például:
console.log(Math.random()); // 0.7069207248635578 console.log(Math.random()); // 0.765046694794209 console.log(Math.random()); // 0.14069121642698246
(Természetesen a visszaküldött számok minden alkalommal eltérőek lesznek. Ezt az összes következő példánál feltételezzük - minden egyes lépésnél más és más eredmény fog történni.)
Ha véletlenszerű számot szeretne kapni egy nagyobb tartomány között, szorozza meg az eredményt Math.random()
egy számmal.
Véletlenszerű lebegőpontos szám generálása 0 és egy megadott max
Általában nincs szükség véletlenszámokra 0 és 1 között - nagyobb számokra vagy akár egész számokra van szükség.
Például, ha véletlenszerű lebegőpontos számot szeretne 0 és 10 között, használhatja:
var x = Math.random()*10; console.log(x); // 4.133793901445541
Véletlenszerű lebegőpontos szám generálása egy tartományon belül
Ha szüksége van egy véletlenszerű lebegőpontos számra, amely két meghatározott szám között mozog, akkor ilyet tehet:
var min = 83.1; var max = 193.36; var x = Math.random()*(max - min)+min; console.log(x); // 126.94014012699063
Véletlenszerű egész szám generálása 0 és max között
Gyakran egész számokra van szükség. Ehhez néhány más módszert kell használnia az Math
objektumtól, Math.floor()
(kerekít a legközelebbi egész számra) és Math.ceil()
(felfelé kerekít a legközelebbi egész számra).
Például, ha véletlenszerűen kell választania egy 10 elemből álló tömbből, akkor 0 és 9 közötti véletlenszerű számra van szüksége (ne feledje, hogy a tömbök nulla indexelésűek).
var x = Math.floor(Math.random()*10); console.log(x); // 7
(Ne feledje, hogy Math.random()
soha nem tér vissza pontosan 1-re, tehát Math.random()*10
soha nem tér vissza pontosan 10. Ez azt jelenti, hogy lefelé kerekítés után az eredmény mindig 9 vagy kevesebb lesz.)
Véletlen egész szám generálása 1 és max között
Ha szüksége van egy véletlenszerű számra, amelynek minimális száma 1 (például egy véletlenszerű nap kiválasztása januárban), használhatja a Math.ceil()
módszert.
var x = Math.ceil(Math.random()*31); console.log(x); // 23
Egy másik módszer az előző függvény (a Math.floor()
) használata és 1 hozzáadása lett volna:
var x = Math.floor(Math.random()*31)+1; console.log(x); // 17
Véletlen egész szám generálása egy tartományon belül
Végül alkalmanként szükség van egy véletlenszerű egész számra két meghatározott egész között. Például, ha tombola jegyeket próbál kiválasztani, és tudja a legalacsonyabb és legnagyobb számokat:
var min = 1718; var max = 3429; var x = Math.floor(Math.random()*(max-min+1)+min); console.log(x); //2509
Mennyire véletlenszerű a Math.random ()?
Kiemelhetjük, hogy a visszaadott szám Math.random()
ál-véletlenszerű szám, mivel egyetlen számítógép sem képes igazán véletlenszerű számot létrehozni, amely véletlenszerűséget mutat az összes skálán és minden méretben. Az által generált ál-véletlenszerű szám Math.random()
azonban általában elegendő szinte bármilyen program igényéhez, amelyet írhat. A nem igazán véletlenszerűség csak csillagászati szempontból nagy számkészletekben válik nyilvánvalóvá, vagy amikor nem ritkán pontos tizedesjegyekre van szükség.