1. Učit se
  2. /
  3. Kurzy
  4. /
  5. Optimizing R Code with Rcpp

Connected

cvičení

Generování skalárních náhodných čísel

Při psaní R kódu obvykle dává smysl generovat náhodná čísla vektorizovaně. V C++ si ale můžeš (a bez výčitek svědomí) dovolit použít smyčky a zpracovávat data po jednom prvku.

R API ti poskytuje funkce pro generování náhodného čísla z běžných rozdělení a Rcpp je zpřístupňuje v jmenném prostoru R::. Například R::rnorm(2, 3) vrátí jedno náhodné číslo z normálního rozdělení se střední hodnotou 2 a směrodatnou odchylkou 3. Všimni si, že argument n ze „skutečné" funkce rnorm() zde chybí — verze pro Rcpp vždy vrací právě jedno číslo.

Dokončete definici funkce positive_rnorm().

Poznámka: Tato závěrečná kapitola je náročná, takže se nenech odradit, pokud se ti cvičení nepodaří hned napoprvé. Pamatuj, jaká odměna tě čeká po dokončení kurzu: výrazné zrychlení tvého R kódu!

Pokyny

100 XP
  • Definuj návratovou hodnotu out jako numerický vektor o velikosti n.
  • Projdi si kód smyčky a zjisti, co která část dělá.
  • Vygeneruj náhodné číslo z normálního rozdělení se střední hodnotou mean a směrodatnou odchylkou sd a přiřaď ho do out[i].
  • Pokud je out[i] menší nebo rovno nule, zopakuj generování.