[R] using "rbinom" in C code gives me erroneous results... random variable is not random (always zero)...

Prof Brian Ripley ripley at stats.ox.ac.uk
Thu Jun 29 13:00:34 CEST 2006

Your text has lost almost all the carriage returns: please do as we ask 
and not send HTML code.

You appear not to be initializing the random seed in your code: the manual 

   The C code behind @R{}'s @code{r at var{xxx}} functions can be accessed by
   including the header file @file{Rmath.h}; @xref{Distribution
   functions}.  Those calls generate a single variate and should also be
   enclosed in calls to @code{GetRNGstate} and @code{PutRNGstate}.

Why have you not done so?

On Thu, 29 Jun 2006, Vumani Dlamini wrote:

> Dear Listers,
> I am trying to use "rbinom" in my C code, but i always get zeros as output no matter the probability. Am not sure what I am doing wrong because the function has worked before. Attached in an example. Noticed that "rbinom" expects 'n' to be REAL.
> Regards, Vumani
> R  2.3.1 (2006-06-01)
> Windows XP
> Gcc
> /* Called this file binom.c and then ran rcmd shlib on it */#include <R.h>#include <Rmath.h>#include <math.h>#include <Rdefines.h>SEXP binomial(SEXP r, SEXP n, SEXP p){ int i; SEXP out; PROTECT(out = allocVector(REALSXP,INTEGER(r)[0]));  for(i = 0; i < INTEGER(r)[0]; ++i){  REAL(out)[i] = rbinom(REAL(n)[0],REAL(p)[0]); } Rprintf("%d   %f   %f\n",INTEGER(r)[0],REAL(n)[0],REAL(p)[0]); UNPROTECT(1); return(out);}
> ### used theses line in R
> dyn.load("binom.dll").Call("binomial",as.integer(10),as.double(1),as.double(0.4))dyn.unload("binom.dll")
> _________________________________________________________________
> Try Live.com - your fast, personalized homepage with all the things you care about in one place.
> http://www.live.com/getstarted
> 	[[alternative HTML version deleted]]
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

More information about the R-help mailing list