root/rand.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


/* RAND.H - Interface to random number generation procedures. */

/* Copyright (c) 1995-2012 by Radford M. Neal.
 *
 * Permission is granted for anyone to copy, use, modify, and distribute
 * these programs and accompanying documents for any purpose, provided
 * this copyright notice is retained and prominently displayed, and note
 * is made of any changes made to these programs.  These programs and
 * documents are distributed without any warranty, express or implied.
 * As the programs were written for research purposes only, they have not
 * been tested to the degree that would be advisable in any important
 * application.  All use of these programs is entirely at the user's own
 * risk.
 */


/* STATE OF RANDOM NUMBER GENERATOR. */

#define N_tables 5              /* Number of tables of real random numbers */

typedef struct
{ int seed;                     /* Seed state derives from */
  int ptr[N_tables];            /* Pointers for tables of real random numbers */
  unsigned short state48[3];    /* State of 'rand48' pseudo-random generator */
} rand_state;


/* BASIC PSEUDO-RANDOM GENERATION PROCEDURES. */

void rand_seed (int);           /* Initialize current state structure by seed */

void rand_use_state (rand_state *); /* Start using given state structure */
rand_state *rand_get_state (void);  /* Return pointer to current state */

int rand_word (void);           /* Generate random 31-bit positive integer */


/* GENERATORS FOR VARIOUS DISTRIBUTIONS. */

double rand_uniform (void);     /* Uniform from [0,1) */
double rand_uniopen (void);     /* Uniform from (0,1) */

int rand_int (int);             /* Uniform from 0, 1, ... (n-1) */
int rand_pickd (double *, int); /* From 0 ... (n-1), with given distribution */
int rand_pickf (float *, int);  /* Same as above, but with floats */
void rand_permutation (int *, int); /* Random permutation */

int rand_poisson (double);      /* Poisson with given mean */
double rand_gaussian (void);    /* Gaussian with mean zero and unit variance */
double rand_logistic (void);    /* Logistic centred at zero with unit width */
double rand_cauchy (void);      /* Cauchy centred at zero with unit width */
double rand_gamma (double);     /* Gamma with given shape parameter */
double rand_exp (void);         /* Exponential with mean one */
double rand_beta (double, double); /* Beta with given parameters */

/* [<][>][^][v][top][bottom][index][help] */