Module CCRandom
Random Generators
include module type of sig ... end
- val init : int -> unit
- val full_init : int array -> unit
- val self_init : unit -> unit
- val bits : unit -> int
- val int : int -> int
- val int32 : Stdlib.Int32.t -> Stdlib.Int32.t
- val nativeint : Stdlib.Nativeint.t -> Stdlib.Nativeint.t
- val int64 : Stdlib.Int64.t -> Stdlib.Int64.t
- val float : float -> float
- val bool : unit -> bool
- type state- = Stdlib.Random.State.t
- type 'a t- = state -> 'a
- Random generator for values of type - 'a.
- type 'a random_gen- = 'a t
- val return : 'a -> 'a t
- return xis the generator that always returns- x. Example:- let random_int = return 4 (* fair dice roll *).
- val (>|=) : 'a t -> ('a -> 'b) -> 'b t
- val delay : (unit -> 'a t) -> 'a t
- Delay evaluation. Useful for side-effectful generators that need some code to run for every call. Example: - let gensym = let r = ref 0 in fun () -> incr r; !r ;; delay (fun () -> let name = gensym() in small_int >>= fun i -> return (name,i) )- since
- 0.4
 
- val choose_exn : 'a t list -> 'a t
- Like - choosebut without option.- raises Invalid_argument
- if the list is empty. 
 
- val choose_return : 'a list -> 'a t
- Choose among the list. - raises Invalid_argument
- if the list is empty. 
 
- val replicate : int -> 'a t -> 'a list t
- replicate n gmakes a list of- nelements which are all generated randomly using- g.
- val sample_without_replacement : compare:('a -> 'a -> int) -> int -> 'a t -> 'a list t
- val sample_without_duplicates : cmp:('a -> 'a -> int) -> int -> 'a t -> 'a list t
- sample_without_replacement n gmakes a list of- nelements which are all generated randomly using- gwith the added constraint that none of the generated random values are equal.- raises Invalid_argument
- if - n <= 0.
 - since
- 2.4
 
- val pick_list : 'a list -> 'a t
- Pick an element at random from the list. - raises Pick_from_empty
- if the list is empty. 
 - since
- 0.16
 
- val pick_array : 'a array -> 'a t
- Pick an element at random from the array. - raises Pick_from_empty
- if the array is empty. 
 - since
- 0.16
 
- val small_int : int t
- A small int (100). 
- val int : int -> int t
- Random int within the given range. 
- val int_range : int -> int -> int t
- Inclusive range. 
- val small_float : float t
- A reasonably small float (100.0). - since
- 0.6.1
 
- val float : float -> float t
- Random float within the given range. - since
- 0.6.1
 
- val float_range : float -> float -> float t
- Inclusive range. - float_range a bassumes- a < b.- since
- 0.6.1
 
- val split : int -> (int * int) option t
- Split a positive value - ninto- n1,n2where- n = n1 + n2.- returns
- Noneif the value is too small.
 
- val split_list : int -> len:int -> int list option t
- Split a value - ninto a list of values whose sum is- nand whose length is- length. The list is never empty and does not contain- 0.- raises Invalid_argument
- if - len <= 1.
 - returns
- Noneif the value is too small.
 
- val retry : ?max:int -> 'a option t -> 'a option t
- retry gcalls- guntil it returns some value, or until the maximum number of retries was reached. If- gfails, then it counts for one iteration, and the generator retries.- parameter max:
- maximum number of retries. Default - 10.
 
- val try_successively : 'a option t list -> 'a option t
- try_successively ltries each generator of- l, one after the other. If some generator succeeds its result is returned, else the next generator is tried.
- val (<?>) : 'a option t -> 'a option t -> 'a option t
- a <?> bis a choice operator. It first tries- a, and returns its result if successful. If- afails, then- bis returned.
- val fix : ?sub1:('a t -> 'a t) list -> ?sub2:('a t -> 'a t -> 'a t) list -> ?subn:(int t * ('a list t -> 'a t)) list -> base:'a t -> int t -> 'a t
- Recursion combinators, for building recursive values. The integer generator is used to provide fuel. The - sub_generators should use their arguments only once!- parameter sub1
- cases that recurse on one value. 
 - parameter sub2
- cases that use the recursive gen twice. 
 - parameter subn
- cases that use a list of recursive cases. 
 
Applicative
Let operators on OCaml >= 4.08.0, nothing otherwise
- since
- 2.8