Hlavní obsah
Programování
Kurz: Programování > Kapitola 1
Lekce 11: Logika a podmíněné příkazy- Podmíněné příkazy
- Výzva: Hopík
- Více interakce myší
- Výzva: Tvá první aplikace pro malování
- Boolean
- Výzva: Analyzátor čísel
- Logičtí operátoři
- Výzva: Tvé první tlačítko
- Výzva: Chytřejší tlačítko
- If/Else – část 1
- Výzva: Rychlé kartičky
- If/Else – část 2
- Shrnutí: Logika a podmíněné příkazy
- Náhodná čísla
- Projekt: Věštecká koule 8-Ball
Náhodná čísla
Nauč se generovat náhodná čísla v ProcessingJS pomocí funkce random() a zkontroluj jejich hodnoty pomocí podmínek if.
Podmínku
if
jsme již používali pro kontrolu hodnot v našem rozhraní, jako byla aktuální pozice uživatelovy myši. Na základě toho jsme reagovali předem zadaným způsobem.Co když nechceme dopředu něco vědět? Co kdybychom chtěli, aby se náš program při každém spuštění choval jinak?
Nahodilost nás zachrání!
Můžeme generovat náhodná čísla a na základě těchto čísel pak pomocí podmínek
if
a else if
měnit chování programu.Například:
var randNum = random(0, 10);
if (randNum < 5) {
text("Trest!", 200, 200);
} else {
text("Odměna!", 200, 200);
}
V půlce případů program vypíše "Trest!" a v druhé půlce "Odměna!".
Jak to funguje:
- Proměnné
randNum
je přiřazeno náhodné číslo od 0 do 10. Vrácené hodnoty mohou být 0, 0,2, 3,3, 4, 5,5, 6,9, 8, 9, nebo 9,99, ale už ne 10. - Podmínka pak ověří, jestli je číslo menší než 5, pak vypíše "Trest!", jinak vypíše "Odměna!".
Občas je lepší používat pouze celá čísla namísto desetinných, abychom tak mohli ověřovat přesné hodnoty. Zde je několik funkcí, které mění desetinná čísla na celá čísla:
Obvykle chceme generovat náhodná čísla, která jsou vybrána relativně rovnoměrně. Například, pokud simulujeme hod mincí, pak očekáváme, že bude stejná šance, že padne "Panna" nebo "Orel".
Tento kód to zařídí:
var randFlip = floor(random(0, 2));
if (randFlip === 0) {
text("Panna", 200, 200);
} else {
text("Orel", 200, 200);
}
Proměnná
randFlip
bude vždy 0 nebo 1, protože volá funkci floor()
na návratové hodnoty funkce random(0, 2)
. Ať víš, proč to tak je, zde je rozepsán výsledek volání funkce
floor()
na různých hodnotách z funkce random(0, 2)
:random(0, 2) | floor(result) |
---|---|
0,0 | 0 |
0,217… | 0 |
0,542… | 0 |
0,973… | 0 |
1,0 | 1 |
1,332… | 1 |
1,589… | 1 |
1,999… | 1 |
Návratové hodnoty funkce
random()
jsou náhodné, takže nebudou nutně vypadat stejně jako hodnoty v této tabulce. Pokud spustíš kód pro házení mincí jen desetkrát, můžou padat pouze "Panna" nebo "Orel". Nicméně, pokud jej spustíš tisíckrát, uvidíš poměr mezi "Pannou" a "Orlem" zhruba 50 na 50. Obecně platí, že když je naším cílem dosáhnout spravedlivého a rovnoměrného rozdělení celých hodnot, je nejlepší použít funkci
floor()
s funkcí random()
. Funkce
random()
je skvělý způsob jak do programů přidat trochu rozmanitosti. Používej ji však opatrně: rozmysli si rozsah čísel, které vytváříš, a rozhodni se, zda potřebuješ čísla zaokrouhlit, a odpovídajícím způsobem pak tyto hodnoty kontroluj.V následujícím projektu si to budeš moci vyzkoušet!
Chceš se zapojit do diskuze?
Zatím žádné příspěvky.