I found a solution via Rcpp::Function and then using the R function set.seed. 
But I do not know what happens, when iterations run in parallel....I fear, that 
then this solution shows undefined behavior.
 
On Feb 10, 2013, at 10:33 AM, Simon Zehnder <szehn...@uni-bonn.de> wrote:

> Actually I arrived at another fundamental question: 
> 
> I read '6.3 Random Number Generation' in the R Extensions Guide. It seems 
> that it is not possible to set out of C++ the random seed (the wrapper 
> RNGScope calls GetRNGstate() and PutRNGState() so it should have no extended 
> functionality), which is very important when trying to produce reproducible 
> results. So, I need a Mersenne-Twister, but I must be able to set the seed in 
> every iteration. I think this brings me to the GSL library or - as long only 
> normal random variates are needed - to the C++ std::random header?
> 
> 
> Best Simon
> 
> 
> On Feb 9, 2013, at 5:42 PM, Yan Zhou <zhou...@me.com> wrote:
> 
>>> 
>>> This really is a BIG topic and worth a few more comments. Note that I wrote 
>>> a
>>> few related posts on RNGs at the Rcpp Gallery, see for example
>>> 
>>> http://gallery.rcpp.org/articles/timing-normal-rngs/
>>> 
>>> which compares the RNGs from R, C++11 and Boost. Simon just added Armadillo 
>>> to
>>> the list, we can add even more RNGs fromn other packages.
>>  
>> If it is of interest to anyone, I once timed Boost, C++11 and Random123 (A 
>> high performance parallel RNG, 
>> http://www.thesalmons.org/john/random123/releases/latest/docs/, It come with 
>> a C++11 compatible RNG engine, can be used just like std::mt19937) once for 
>> different compilers on Linux. I just uploaded them to 
>> https://github.com/zhouyan/vSMC/wiki/RNG-performance-comparison
>> 
>> There are two benchmark, one for the performance of URNG (mt19937 etc). 
>> These include those in C++11 <random> and Boost.Random, which are almost 
>> identical in functionality (C++11 <random> is based on Boost.Random after 
>> all). Also they include two URNG from Random123, threefry and philox (both 
>> come with four basic configurations)
>> 
>> Another benchmark is the performance of generating distribution random 
>> numbers (such as normal). The Random123 threefry2x64 was used for all 
>> distribution and compilers, since it is the one with least performance 
>> difference between compilers.
>> 
>> Compilers include,
>> clang SVN with libstdc++ 4.7
>> clang SVN with libc++ SVN
>> gcc 4.7
>> intel icpc 13
>> 
>> clang and gcc version also come with results when using AMD libm instead of 
>> glibc. However, the benchmark are not Rcpp specific. They are compiled to 
>> standalone C++ programs. But all these URNGs can be used Rcpp. As 
>> demonstrated in Dirk's example. 
>> 
>> Best,
>> 
>> Yan Zhou
>> 
> 
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel@lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to