JavaScript Math.random () metódus megmagyarázva

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 Mathobjektumtó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()*10soha 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.