C中的Stata随机数生成器(+;+;) 我在C++中改写(并行)一些STATA模拟。

C中的Stata随机数生成器(+;+;) 我在C++中改写(并行)一些STATA模拟。,stata,Stata,出于测试目的,我想使用Stata的随机数 我的方法是在STATA中生成数字,把它们转储到CSV文件(100s MB),然后在我的C++程序中读取。这是缓慢和不雅的 理想的是,我想用C++代码生成相同的制服。 我读到Stata使用KISS算法(引用)。我在中找到了aC实现。但是KISS有几种不同的版本,而且似乎还有一些工作要做,以使它采用一个Stata风格的种子,并产生统一的数字(Stata博客建议我们对产生的32位int进行二进制扩展,并返回0.binary_扩展) 是否有人已经编写了C/C++

出于测试目的,我想使用Stata的随机数

我的方法是在STATA中生成数字,把它们转储到CSV文件(100s MB),然后在我的C++程序中读取。这是缓慢和不雅的

理想的是,我想用C++代码生成相同的制服。 我读到Stata使用KISS算法(引用)。我在中找到了aC实现。但是KISS有几种不同的版本,而且似乎还有一些工作要做,以使它采用一个Stata风格的种子,并产生统一的数字(Stata博客建议我们对产生的32位int进行二进制扩展,并返回0.binary_扩展)

是否有人已经编写了C/C++代码来复制从Stata的uniform()返回的数字


编辑:使用Stata的“设置种子”计算的接吻种子似乎依赖于一个秘密函数。Cite=

我最终发现可以通过一个函数从Stata内部调用C/C++代码

特别是,可以从Stata内部使用C++11的Mersenne Twister RNG


代码(cpprandom.cpp)和演示(cpprandom.do)在我的电脑上。你需要从(和现代C++编译器)中得到的文件STPLUIN .C和STPULIL.H。p> Paging@NickCox:有什么想法吗?对不起,没有。你想复制用户看不到的专有代码,所以我不能发表评论。谢谢你的回复。有用的详细信息。请注意,2015年4月7日发布的Stata 14中对随机数生成进行了大量修改。哦,谢谢,这看起来是一个方便的链接。还有一些关于如何在KISS生成器中设置种子的更多细节。