Groonga 3.0.9 Source Code Document
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
mt19937ar.h
Go to the documentation of this file.
1 /*
2 ** mt19937ar.h - MT Random functions
3 **
4 ** See Copyright Notice in mruby.h
5 */
6 
7 #define N 624
8 
9 typedef struct {
10  unsigned long mt[N];
11  int mti;
12  union {
13  unsigned long gen_int;
14  double gen_dbl;
15  };
16 } mt_state;
17 
18 void mrb_random_init_genrand(mt_state *, unsigned long);
19 unsigned long mrb_random_genrand_int32(mt_state *);
21 
22 /* initializes mt[N] with a seed */
23 void init_genrand(unsigned long s);
24 
25 /* initialize by an array with array-length */
26 /* init_key is the array for initializing keys */
27 /* key_length is its length */
28 /* slight change for C++, 2004/2/26 */
29 void init_by_array(unsigned long init_key[], int key_length);
30 
31 /* generates a random number on [0,0xffffffff]-interval */
32 unsigned long genrand_int32(void);
33 
34 /* generates a random number on [0,0x7fffffff]-interval */
35 long genrand_int31(void);
36 
37 /* These real versions are due to Isaku Wada, 2002/01/09 added */
38 /* generates a random number on [0,1]-real-interval */
39 double genrand_real1(void);
40 
41 /* generates a random number on [0,1)-real-interval */
42 double genrand_real2(void);
43 
44 /* generates a random number on (0,1)-real-interval */
45 double genrand_real3(void);
46 
47 /* generates a random number on [0,1) with 53-bit resolution*/
48 double genrand_res53(void);