Fő tartalom
Programozás
Tantárgy/kurzus: Programozás > 1. témakör
11. lecke: Logika és feltételes elágazás- Feltételes elágazás
- Feladat: Pattogó labda
- További interakciók az egérrel
- Feladat: Az első festő applikációd
- Logikai értékek
- Feladat: Számelemző
- Logikai operátorok
- Feladat: Az első gombod
- Feladat: Okosgomb
- If/Else - 1. rész
- Feladat: Cifra villámkártya
- If/Else - 2. rész
- Áttekintés: Logika és feltételes elágazás
- Véletlen számok
- Projekt: Bűvös 8-as golyó
© 2023 Khan AcademyFelhasználási feltételekAdatkezelési tájékoztatóSüti figyelmeztetés
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,0 | 0 |
0,217… | 0 |
0,542… | 0 |
0,973… | 0 |
1,0 | 1 |
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.