[R] rgamma function

Thomas Lumley tlumley at uw.edu
Mon Jul 16 23:21:55 CEST 2012

On Mon, Jul 16, 2012 at 12:49 PM, Chandler Zuo <zuo at stat.wisc.edu> wrote:
> Sorry that I posted the wrong syntax. My initial program is very long and I
> tried to post the section where I have been narrowed to locate the problem.
> In this sample I am simulating a Gamma with size parameter 5000 and scale
> parameter 1.
> I plugged in many breaks in my initial program and what I found was that
> most of the time the program stops when encountering a call to rgamma()
> function. It just freezes without popping out any error.
> #include<Rmath.h>
> #include<time.h>
> #include<Rinternals.h>
> SEXP generateGamma ()
> {
>     SEXP a;
>     PROTECT(a=allocVector(REALSXP,1));
>     srand(time(NULL));
>     REAL(a)[0]=rgamma(5000,1);
>     UNPROTECT(1);
>     return (a);
> }

srand() isn't relevant to the R random number generator, and you
haven't included the header file that defines it (this should lead to
a warning about implicit declaration).

More importantly, you haven't included the R equivalents GetRNGstate()
and PutRNGstate().  You want something like

#include "R.h"

SEXP generateGamma ()
    SEXP a;
    return (a);

    - thomas

Thomas Lumley
Professor of Biostatistics
University of Auckland

More information about the R-help mailing list