1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
let () = Error.init ()
type rng_type =
| BOROSH13
| COVEYOU
| CMRG
| FISHMAN18
| FISHMAN20
| FISHMAN2X
| GFSR4
| KNUTHRAN
| KNUTHRAN2
| KNUTHRAN2002
| LECUYER21
| MINSTD
| MRG
| MT19937
| MT19937_1999
| MT19937_1998
| R250
| RAN0
| RAN1
| RAN2
| RAN3
| RAND
| RAND48
| RANDOM128_BSD
| RANDOM128_GLIBC2
| RANDOM128_LIBC5
| RANDOM256_BSD
| RANDOM256_GLIBC2
| RANDOM256_LIBC5
| RANDOM32_BSD
| RANDOM32_GLIBC2
| RANDOM32_LIBC5
| RANDOM64_BSD
| RANDOM64_GLIBC2
| RANDOM64_LIBC5
| RANDOM8_BSD
| RANDOM8_GLIBC2
| RANDOM8_LIBC5
| RANDOM_BSD
| RANDOM_GLIBC2
| RANDOM_LIBC5
| RANDU
| RANF
| RANLUX
| RANLUX389
| RANLXD1
| RANLXD2
| RANLXS0
| RANLXS1
| RANLXS2
| RANMAR
| SLATEC
| TAUS
| TAUS_2
| TAUS_113
| TRANSPUTER
| TT800
| UNI
| UNI32
| VAX
| WATERMAN14
| ZUF
type t
external default : unit -> rng_type
= "ml_gsl_rng_get_default"
external default_seed : unit -> nativeint
= "ml_gsl_rng_get_default_seed"
external set_default : rng_type -> unit
= "ml_gsl_rng_set_default"
external set_default_seed : nativeint -> unit
= "ml_gsl_rng_set_default_seed"
external env_setup : unit -> unit
= "ml_gsl_rng_env_setup"
external create : rng_type -> t = "ml_gsl_rng_alloc"
external delete : t -> unit = "ml_gsl_rng_free"
let make rngtype =
let rng = create rngtype in
Gc.finalise delete rng ;
rng
external set : t -> nativeint -> unit = "ml_gsl_rng_set"
external name : t -> string = "ml_gsl_rng_name"
external max : t -> nativeint = "ml_gsl_rng_max"
external min : t -> nativeint = "ml_gsl_rng_min"
external get_type : t -> rng_type = "ml_gsl_rng_get_type"
external memcpy : t -> t -> unit = "ml_gsl_rng_memcpy"
external clone : t -> t = "ml_gsl_rng_clone"
external dump_state : t -> string * string = "ml_gsl_rng_dump_state"
external set_state : t -> string * string -> unit = "ml_gsl_rng_set_state"
external get : t -> nativeint = "ml_gsl_rng_get"
external uniform : t -> float = "ml_gsl_rng_uniform"
external uniform_pos : t -> float = "ml_gsl_rng_uniform_pos"
external uniform_int : t -> int -> int = "ml_gsl_rng_uniform_int" [@@noalloc]
external uniform_arr : t -> float array -> unit
= "ml_gsl_rng_uniform_arr" [@@noalloc]
external uniform_pos_arr : t -> float array -> unit
= "ml_gsl_rng_uniform_pos_arr" [@@noalloc]