I would like to do the equivalent of R's set.seed() inside of a C++ function. How do I do this?
Note that I make this C++ function available in R via the Rcpp package. I would like myfun(seed=42) to return the same result each time it is called in R. I do not want to set the rng seed in R via set.seed() prior to calling myfun every time.
C++ file:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
double myfun(double seed) {
  std::srand(seed); // <-- this doesn't do what i want
  return R::rnorm(0,1);
}
/*** R
myfun(42)
myfun(42)
*/
This currently returns:
> myfun(42)
[1] 0.737397
> myfun(42)
[1] -0.02764103
What I want is:
> myfun(42)
[1] 0.737397
> myfun(42)
[1] 0.737397