1. Learn
  2. /
  3. Courses
  4. /
  5. Rcpp で R コードを最適化する

Connected

Exercise

スカラーの乱数生成

R でコードを書くときは、通常はベクトル化して乱数を生成するのが理にかなっています。一方で C++ では、ループを使ってデータを要素ごとに処理しても問題ありません(良心の呵責すら許してくれます)。

R の API には、よく使われる分布から乱数を1つ生成する関数が用意されており、Rcpp を使うとこれらの関数に R:: 名前空間からアクセスできます。例えば、R::rnorm(2, 3) は平均 2、標準偏差 3 の正規分布から乱数を1つ返します。「本家」の rnorm() にある引数 n は存在しない点に注意してください。Rcpp 版は常に1つの数だけを返します。

それでは、positive_rnorm() の関数定義を完成させてください。

注意: この最後の章は難易度が高いです。最初の試行で演習を解けなくても落ち込まないでください。このコースをやりきったご褒美は、R コードの実行性能が劇的に向上することですよ!

Instructions

100 XP
  • 戻り値 out をサイズ n の数値ベクトルとして指定します。
  • ループ処理のコードを読んで、それぞれの役割を確認しましょう。
  • 平均 mean、標準偏差 sd の正規乱数を生成し、out[i] に代入します。
  • out[i] が 0 以下の間は、やり直してください。