If you're seeing this message, it means we're having trouble loading external resources on our website.

Ha webszűrőt használsz, győződj meg róla, hogy a *.kastatic.org és a *.kasandbox.org nincsenek blokkolva.

Fő tartalom

Véletlen számok

Tanuld meg, hogyan tudsz ProcessingJS-ben véletlenszámot generálni a random() függvény segítségével és ellenőrizd le az így kapott értékeket if feltételekkel.
Az if feltételeket arra használtuk, hogy ellenőrizzünk bizonyos értékeket a környezettel kapcsolatban – mint például a felhasználó egerének jelenlegi helyzetét –, és hogy előre megjósolható módon válaszoljunk.
De mi van akkor, ha nem előre megjósolható viselkedést szeretnénk? Mit tegyünk, ha a programunk minden egyes futásakor más és más működést szeretnénk elérni?
A véletlenszerűség a megoldás!
Generálhatunk random számokat, és if illetve else if feltételeket használva módosíthatjuk programunk viselkedését a random számoktól függően.
Például:
var randNum = random(0, 10);
if (randNum < 5) {
   text("Csokit!", 200, 200);
} else {
   text("Csalunk!", 200, 200);
}
Az esetek felében a program a "Csokit!" szöveget írja ki, a másik felében pedig a "Csalunk!" szöveget.
Így működik:
  • A randNum változónak egy random értéket adunk, a 0-tól kezdődő 10-ig terjedő számintervallumból. A visszaadott értékek lehetnek 0, 0,2, 3,3, 4, 5,5, 6,9, 8, 9, vagy 9,99, de 10 már nem.
  • A feltétel ellenőrzi, hogy a visszaadott szám kisebb-e, mint 5, és "Csokit!" ír ki, ha igen, egyébként pedig a "Csalunk!' szöveget.
Néha egyszerűbb lebegőpontos számok helyett egész számokat kezelni, mert így pontos értékeket ellenőrizhetünk. Íme néhány függvény, melyek lebegőpontos számokat egészekké alakítanak:
  • round(): Lefelé kerekíti a kapott számot a legközelebbi egészre, ha a tizedes helyi érték kisebb, mint 5, és felfelé kerekíti, ha a tizedes helyi érték 5 vagy annál nagyobb.
  • ceil(): Mindig felfelé kerekíti a kapott számot a következő egész számra.
  • floor(): Mindig lefelé kerekíti a kapott számot egész számra.
Általában olyan random számokat szeretnénk generálni, amik viszonylag egyenletesen oszlanak el. Például ha egy pénzérme feldobását szimuláljuk, akkor azt várjuk el, hogy a "Fej" és az "Írás" esélye egyenlő legyen.
Az alábbi kód ezt a célt szolgálja:
var randFeldobas = floor(random(0, 2));
if (randFeldobas === 0) {
   text("Fej", 200, 200);
} else {
   text("Írás", 200, 200);
}
A randFeldobas változó mindig 0 vagy 1 lesz, mivel a floor() függvényt hívjuk meg a random(0, 2) visszatérési értékén.
Hogy érzékeltessük, miért van ez így, íme a floor() meghívásának eredménye a random(0, 2) által visszaadott értékeken:
random(0, 2)floor(eredmeny)
0,00
0,217…0
0,542…0
0,973…0
1,01
1,332…1
1,589…1
1,999…1
A random() visszatérési értékei véletlenszerűek (randomok), így nem feltétlenül fognak olyan egyenletesen eloszlani, mint a táblázatban látható értékek. Ha mindössze 10 alkalommal futtatod a pénzfeldobó kódot, lehetséges, hogy csupa "Fej"-et vagy csupa "Írás"-t fogsz látni. Ha azonban több ezerszer futtatod, és számolod az eredményt, "Fej"-et és "Írás"-t egyaránt az eseteknek körülbelül 50%-ában fogsz kapni.
Az az általános szabály, hogy ha az a célunk, hogy egyenletes eloszlású egész számokat kapjunk, akkor a legjobb, ha a floor() függvényt és a random() függvényt együtt használjuk.
A random() függvény nagyszerű módja annak, hogy egy kis változatosságot adj programjaidnak. De használd óvatosan: gondold át a generált számok intervallumát, döntsd el, hogy kell-e kerekítened a számokat, és ellenőrizd megfelelően az értékeket.
A következő projektben Te magad is kipróbálhatod ezt!

Szeretnél részt venni a beszélgetésben?

Még nincs hozzászólás.
Tudsz angolul? Kattints ide, ha meg szeretnéd nézni, milyen beszélgetések folynak a Khan Academy angol nyelvű oldalán.