1. Học hỏi
  2. /
  3. Khoa Học
  4. /
  5. Tối ưu hóa mã R với Rcpp

Connected

Bài tập

Sinh số ngẫu nhiên vô hướng

Khi viết mã R, thường hợp lý hơn là sinh số ngẫu nhiên theo kiểu vector hóa. Tuy nhiên, với C++, bạn hoàn toàn có thể (và lương tâm vẫn yên ổn) dùng vòng lặp để xử lý dữ liệu từng phần tử.

R API cung cấp các hàm sinh số ngẫu nhiên từ những phân phối quen thuộc, và Rcpp giúp bạn truy cập các hàm này trong không gian tên R::. Ví dụ, R::rnorm(2, 3) trả về một số ngẫu nhiên từ phân phối Chuẩn với kỳ vọng 2 và độ lệch chuẩn 3. Lưu ý đối số n của rnorm() “thật” không xuất hiện ở đây. Phiên bản Rcpp luôn trả về đúng một số.

Hãy hoàn thiện định nghĩa hàm positive_rnorm().

Lưu ý: Chương cuối cùng này khó, nên đừng nản nếu bạn chưa hoàn thành bài ngay lần đầu. Hãy nhớ phần thưởng khi bạn hoàn tất khóa học: tăng tốc hiệu năng mã R của bạn một cách ấn tượng!

Hướng dẫn

100 XP
  • Khai báo giá trị trả về out là một numeric vector có kích thước n.
  • Đọc mã vòng lặp để hiểu từng phần làm gì.
  • Sinh một số ngẫu nhiên phân phối chuẩn với kỳ vọng mean và độ lệch chuẩn sd, gán vào out[i].
  • Trong khi out[i] nhỏ hơn hoặc bằng 0, hãy thử lại.