mirror of
https://github.com/c-cube/iter.git
synced 2025-12-05 19:00:31 -05:00
Merge pull request #40 from mooreryan/random-iter-docs
Add docs about seeding random generator
This commit is contained in:
commit
29cabc46eb
2 changed files with 44 additions and 0 deletions
22
src/Iter.mli
22
src/Iter.mli
|
|
@ -707,6 +707,8 @@ end
|
|||
|
||||
(** {1 Random iterators} *)
|
||||
|
||||
(** {2 Generating} *)
|
||||
|
||||
val random_int : int -> int t
|
||||
(** Infinite iterator of random integers between 0 and
|
||||
the given higher bound (see Random.int) *)
|
||||
|
|
@ -745,6 +747,26 @@ val sample : int -> 'a t -> 'a array
|
|||
It returns an array of size [min (length seq) n].
|
||||
@since 0.7 *)
|
||||
|
||||
(** {2 Seeding}
|
||||
|
||||
Random iterators use [Random.int], [Random.float], [Random.bool],
|
||||
etc., under the hood, so they will respect seeding of the random
|
||||
generator in the usual way. I.e., if you do not initialize the
|
||||
random generator with one of [Random.init], [Random.full_init], or
|
||||
[Random.self_init] before calling these functions, they will yield
|
||||
the same values across seperate invocations of your program.
|
||||
|
||||
Example:
|
||||
|
||||
{[
|
||||
(* Ensure a fresh random seed each time the program is executed. *)
|
||||
let () = Random.self_init ()
|
||||
|
||||
(* Generate random values. *)
|
||||
let l = Iter.random_int 1000 |> Iter.take 3 |> Iter.to_list
|
||||
]}
|
||||
*)
|
||||
|
||||
(** {1 Infix functions} *)
|
||||
|
||||
module Infix : sig
|
||||
|
|
|
|||
|
|
@ -676,6 +676,8 @@ end
|
|||
|
||||
(** {2 Random iterators} *)
|
||||
|
||||
(** {3 Generating} *)
|
||||
|
||||
val random_int : int -> int t
|
||||
(** Infinite iterator of random integers between 0 and
|
||||
the given higher bound (see Random.int) *)
|
||||
|
|
@ -714,6 +716,26 @@ val sample : n:int -> 'a t -> 'a array
|
|||
It returns an array of size [min (length seq) n].
|
||||
@since 0.7 *)
|
||||
|
||||
(** {3 Seeding}
|
||||
|
||||
Random iterators use [Random.int], [Random.float], [Random.bool],
|
||||
etc., under the hood, so they will respect seeding of the random
|
||||
generator in the usual way. I.e., if you do not initialize the
|
||||
random generator with one of [Random.init], [Random.full_init], or
|
||||
[Random.self_init] before calling these functions, they will yield
|
||||
the same values across seperate invocations of your program.
|
||||
|
||||
Example:
|
||||
|
||||
{[
|
||||
(* Ensure a fresh random seed each time the program is executed. *)
|
||||
let () = Random.self_init ()
|
||||
|
||||
(* Generate random values. *)
|
||||
let l = Iter.random_int 1000 |> Iter.take 3 |> Iter.to_list
|
||||
]}
|
||||
*)
|
||||
|
||||
(** {2 Infix functions} *)
|
||||
|
||||
module Infix : sig
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue