私はこの質問者とは反対の問題を抱えています: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()を使用した後、RWindowsGUIから呼び出します。
> .C("main")
0.000889
list()
そして今、Rを閉じて再起動し、dyn.load()を再度実行すると(ただし、2回目のコンパイルは行われません):
> .C("main")
0.000889
list()
私がインターネットで見つけたさまざまなコードと「WritingRExtensions」マニュアルによると、これは起こらないはずです。しかし、私はおそらく一歩を逃していますか?