1. 학습
  2. /
  3. 강의
  4. /
  5. Rcpp로 R 코드 최적화하기

Connected

연습 문제

스칼라 난수 생성

R 코드에서는 보통 벡터화 방식으로 난수를 생성하는 것이 합리적입니다. 하지만 C++에서는 양심의 가책 없이 루프를 사용해 데이터를 요소별로 처리할 수 있습니다.

R API는 흔히 쓰는 분포에서 난수를 생성하는 함수를 제공하며, Rcpp는 이를 R:: 네임스페이스를 통해 사용할 수 있게 합니다. 예를 들어, R::rnorm(2, 3)은 평균이 2, 표준편차가 3인 정규분포에서 난수 하나를 반환합니다. "진짜" rnorm()의 n 인자가 없다는 점에 주의하세요. Rcpp 버전은 항상 숫자 하나만 반환합니다.

이제 positive_rnorm()의 함수 정의를 완성해 보세요.

참고: 마지막 장은 난이도가 높습니다. 처음에 연습 문제를 모두 풀지 못하더라도 낙담하지 마세요. 이 과정을 마치면 R 코드의 성능을 놀랄 만큼 향상시킬 수 있습니다!

지침

100 XP
  • 반환값 out을 크기가 n인 숫자형 벡터로 지정하세요.
  • 각 루프가 무엇을 하는지 코드를 읽어 보세요.
  • 평균이 mean, 표준편차가 sd인 정규 난수를 생성해 out[i]에 할당하세요.
  • out[i]가 0 이하인 동안에는 다시 시도하세요.