55 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /* 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 */
 | 
