On 22 March 2012 at 08:20, Davor Cubranic wrote:
| On 2012-03-22, at 5:41 AM, Glenn Lawyer wrote:
| 
| > Is there a reason to prefer Rcpp::runif over the c++ rand() for, say, 
accepting a state in a Markov chain simulation? Is one more random than 
another? faster?
| 
| I'd use the R random generator so your C++ code is in sync with R in terms of 
seeds and random sequences. For instance, if you're running your simulation in 
parallel on multiple machines or cores, you can use one of the RNG's designed 
specifically to avoid correlations between individual instances, such as SPRNG 
or RNGstream.

Ah, yes, indeed. Sorry I omitted that. It is indeed important that

    set.seed(42); rnorm(6)

and

    f <- cxxfunction(,body='RNGScope tmp; return rnorm(2)', plugin="Rcpp")
    set.seed(42); c(rnorm(2), f(), rnorm(2))

return the same result:

    R> f <- inline::cxxfunction(,body='RNGScope tmp; return rnorm(2);', 
plugin="Rcpp")
    R> set.seed(42); c(rnorm(2), f(), rnorm(2))
    [1]  1.370958 -0.564698  0.363128  0.632863  0.404268 -0.106125
    R> 
    R> set.seed(42); rnorm(6)
    [1]  1.370958 -0.564698  0.363128  0.632863  0.404268 -0.106125
    R> 

so that you can mix and match.

Dirk

-- 
"Outside of a dog, a book is a man's best friend. Inside of a dog, it is too
dark to read." -- Groucho Marx
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to