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

Pokud používáš webový filtr, ujisti se, že domény: *.kastatic.org and *.kasandbox.org jsou vyloučeny z filtrování.

Hlavní obsah

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:
  • round(): Zaokrouhlí číslo dolů, pokud je číslo za desetinnou čárkou menší než ,5 a zaokrouhlí jej nahoru, pokud je číslo za desetinnou čárkou větší nebo rovno ,5.
  • ceil(): Vždy zaokrouhlí číslo na nejbližší vyšší celé číslo.
  • floor(): Vždy zaokrouhlí číslo dolů na nejbližší celé číslo.
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,00
0,217…0
0,542…0
0,973…0
1,01
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.
Umíš anglicky? Kliknutím zobrazíš diskuzi anglické verze Khan Academy.