BaşlayınÜcretsiz başlayın

Skaler rastgele sayı üretimi

R kodu yazarken, genellikle rastgele sayıları vektörleştirilmiş şekilde üretmek mantıklıdır. Ancak C++ tarafında döngü kullanmana ve veriyi öğe öğe işlemesine kimse kızmaz (vicdanın bile).

R API'si, yaygın dağılımlardan birinden rastgele sayı üretmek için fonksiyonlar sağlar ve Rcpp bu fonksiyonları R:: ad alanında erişilebilir kılar. Örneğin, R::rnorm(2, 3) sana ortalaması 2 ve standart sapması 3 olan Normal dağılımdan bir rastgele sayı verir. Dikkat edersen, "gerçek" rnorm() içindeki n argümanı burada yok. Rcpp sürümü her zaman tek bir sayı döndürür.

Şimdi positive_rnorm() fonksiyon tanımını tamamla.

Not: Bu son bölüm zorlu, o yüzden ilk denemede egzersizleri bitiremezsen moralini bozma. Bu kursu tamamlamanın ödülünü unutma: R kodunun performansını gözle görülür biçimde artırmak!

Bu egzersiz, kursun bir parçasıdır

Rcpp ile R Kodunu Optimize Etme

Kursa Göz Atın

Egzersiz talimatları

  • Dönüş değeri out'u, boyutu n olan sayısal bir vektör olarak belirt.
  • Döngü kodunu oku ve her birinin ne yaptığını gör.
  • Ortalama mean ve standart sapma sd ile bir normal rastgele sayı üret ve out[i]'e ata.
  • out[i] sıfıra küçük ya da eşit olduğu sürece tekrar dene.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

#include 
using namespace Rcpp;

// [[Rcpp::export]]
NumericVector positive_rnorm(int n, double mean, double sd) {
  // Specify out as a numeric vector of size n
  ___ ___(___);
  
  // This loops over the elements of out
  for(int i = 0; i < n; i++) {
    // This loop keeps trying to generate a value
    do {
      // Call R's rnorm()
      out[i] = ___;
      // While the number is negative, keep trying
    } while(___);
  }
  return out;
}

/*** R
  positive_rnorm(10, 2, 2)
*/
Kodu Düzenle ve Çalıştır