के भीतर बीज बी/सेटिंग बीज/सी पास करना मैं आर कोड के भीतर सी बना रहा हूं।आर कोड
मेरे सी कोड में मैं यादृच्छिक संख्या उत्पन्न करने के लिए रैंड() फ़ंक्शन का उपयोग कर रहा हूं। आर-ext.pdf का कहना है कि मुझे आदेशों का उपयोग करके बीज सेट करना होगा;
GetRNGstate();
PutRNGstate();
हालांकि मैं उपरोक्त इन आदेशों का उपयोग कर रहा हूं, फिर भी मुझे एक ही बीज के लिए अलग-अलग मूल्य मिल रहे हैं। क्या आप मुझे कोई मदद दे सकते हैं?
न्यूनतम उदाहरण है:
सी में:
# include <R.h>
# include <Rinternals.h>
# include <Rmath.h>
# include <R_ext/Linpack.h>
SEXP example(){
SEXP output;
GetRNGstate();
PROTECT(output = allocVector(INTSXP, 1));
INTEGER(output)[0] = rand() % 50;
PutRNGstate();
UNPROTECT(1);
return(output);
}
आर में:
dyn.load("example.so")
## The following codes return different values at ever run
set.seed(1)
.Call("example")
अग्रिम धन्यवाद।
एक लाइनर! वास्तव में शक्तिशाली! – agstudy
हां, यद्यपि 'cppFunction() 'उस रेखा के काम को बनाने के लिए दृश्यों के पीछे कुछ जादू करता है - यह विस्तारित हो जाता है। लेकिन हमारे लिए उपयोग करने के लिए, यह जादू के बहुत करीब है ;-) –
लेकिन क्या मैं SourceCpp का उपयोग करना बेहतर है (कम से कम डीबग उद्देश्य के लिए)? – agstudy