35 lines
601 B
C
35 lines
601 B
C
#ifndef UC_MERSENNE_TWISTER_H
|
|
#define UC_MERSENNE_TWISTER_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define MT_RAND_N 624
|
|
/** Context used for the PRNG*/
|
|
typedef struct {
|
|
unsigned int x[MT_RAND_N];
|
|
int i;
|
|
} MTRand;
|
|
|
|
/** Initialize a Mersenne Twister PRNG context.
|
|
* @param seed Starter seed for the PRNG
|
|
* @param r context for the PRNG
|
|
*/
|
|
void mtsrand(int seed, MTRand *r);
|
|
|
|
/** Generate a new random number.
|
|
* Generated range is 0 to UINT_MAX
|
|
*
|
|
* @param r context for the PRNG
|
|
* @return A pseudo random number
|
|
*/
|
|
unsigned int mtrand(MTRand *r);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|