我对这个提问者有相反的问题:在 R 代码中传递种子/设置种子/C。我的问题是我想使用 R 随机数生成器在 C 代码中生成一个随机数,但是每次运行它时,我都会得到相同的“随机”值。这是我的代码(包括我碰巧正在使用的头文件,这对于代码片段来说并非都是必需的):
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <math.h> // C header files
#include <R.h>
#include <R_ext/Utils.h>
#include <Rmath.h>
void main(){
GetRNGstate();
double u = unif_rand();
PutRNGstate();
Rprintf("%f\n",u);
}
现在我在使用 R CMD SHLIB 编译并使用 dyn.load() 后从 R Windows GUI 调用它:
> .C("main")
0.000889
list()
现在,如果我关闭 R,重新启动,然后 dyn.load() 再次(但没有第二次编译):
> .C("main")
0.000889
list()
根据我在互联网上找到的各种代码和“编写 R 扩展”手册,这不应该发生。但我可能只是错过了一步?