ocaml-containers/3.1/containers/CCRandom/index.html
2020-12-05 11:17:01 -05:00

7 lines
No EOL
23 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCRandom (containers.CCRandom)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../index.html">containers</a> &#x00BB; CCRandom</nav><h1>Module <code>CCRandom</code></h1><h2 id="random-generators"><a href="#random-generators" class="anchor"></a>Random Generators</h2><nav class="toc"><ul><li><a href="#applicative">Applicative</a></li><li><a href="#run-a-generator">Run a generator</a></li></ul></nav></header><div><div class="spec include"><div class="doc"><p><a href="https://caml.inria.fr/pub/docs/manual-ocaml/libref/Random.html">Documentation for the standard Random module</a></p><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><dl><dt class="spec value" id="val-init"><a href="#val-init" class="anchor"></a><code><span class="keyword">val</span> init : int <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-full_init"><a href="#val-full_init" class="anchor"></a><code><span class="keyword">val</span> full_init : <span>int array</span> <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-self_init"><a href="#val-self_init" class="anchor"></a><code><span class="keyword">val</span> self_init : unit <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-bits"><a href="#val-bits" class="anchor"></a><code><span class="keyword">val</span> bits : unit <span>&#45;&gt;</span> int</code></dt><dt class="spec value" id="val-int"><a href="#val-int" class="anchor"></a><code><span class="keyword">val</span> int : int <span>&#45;&gt;</span> int</code></dt><dt class="spec value" id="val-int32"><a href="#val-int32" class="anchor"></a><code><span class="keyword">val</span> int32 : Stdlib.Int32.t <span>&#45;&gt;</span> Stdlib.Int32.t</code></dt><dt class="spec value" id="val-nativeint"><a href="#val-nativeint" class="anchor"></a><code><span class="keyword">val</span> nativeint : Stdlib.Nativeint.t <span>&#45;&gt;</span> Stdlib.Nativeint.t</code></dt><dt class="spec value" id="val-int64"><a href="#val-int64" class="anchor"></a><code><span class="keyword">val</span> int64 : Stdlib.Int64.t <span>&#45;&gt;</span> Stdlib.Int64.t</code></dt><dt class="spec value" id="val-float"><a href="#val-float" class="anchor"></a><code><span class="keyword">val</span> float : float <span>&#45;&gt;</span> float</code></dt><dt class="spec value" id="val-bool"><a href="#val-bool" class="anchor"></a><code><span class="keyword">val</span> bool : unit <span>&#45;&gt;</span> bool</code></dt></dl><div class="spec module" id="module-State"><a href="#module-State" class="anchor"></a><code><span class="keyword">module</span> State = Stdlib__random.State</code></div><dl><dt class="spec value" id="val-get_state"><a href="#val-get_state" class="anchor"></a><code><span class="keyword">val</span> get_state : unit <span>&#45;&gt;</span> <a href="index.html#module-State">State</a>.t</code></dt><dt class="spec value" id="val-set_state"><a href="#val-set_state" class="anchor"></a><code><span class="keyword">val</span> set_state : <a href="index.html#module-State">State</a>.t <span>&#45;&gt;</span> unit</code></dt></dl></details></div></div></div><dl><dt class="spec type" id="type-state"><a href="#type-state" class="anchor"></a><code><span class="keyword">type</span> state</code><code> = Stdlib.Random.State.t</code></dt><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> <span>'a t</span></code><code> = <a href="index.html#type-state">state</a> <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p>Random generator for values of type <code>'a</code>.</p></dd></dl><dl><dt class="spec type" id="type-random_gen"><a href="#type-random_gen" class="anchor"></a><code><span class="keyword">type</span> <span>'a random_gen</span></code><code> = <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt></dl><dl><dt class="spec value" id="val-return"><a href="#val-return" class="anchor"></a><code><span class="keyword">val</span> return : <span class="type-var">'a</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>return x</code> is the generator that always returns <code>x</code>. Example: <code>let random_int = return 4 (* fair dice roll *)</code>.</p></dd></dl><dl><dt class="spec value" id="val-flat_map"><a href="#val-flat_map" class="anchor"></a><code><span class="keyword">val</span> flat_map : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>flat_map f g st</code> is <code>f (g st) st</code>.</p></dd></dl><dl><dt class="spec value" id="val-(&gt;&gt;=)"><a href="#val-(&gt;&gt;=)" class="anchor"></a><code><span class="keyword">val</span> (&gt;&gt;=) : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Monadic <code>bind</code>.</p></dd></dl><dl><dt class="spec value" id="val-map"><a href="#val-map" class="anchor"></a><code><span class="keyword">val</span> map : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>map f g st</code> is <code>f (g st)</code>.</p></dd></dl><dl><dt class="spec value" id="val-(&gt;|=)"><a href="#val-(&gt;|=)" class="anchor"></a><code><span class="keyword">val</span> (&gt;|=) : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dt class="spec value" id="val-delay"><a href="#val-delay" class="anchor"></a><code><span class="keyword">val</span> delay : <span>(unit <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Delay evaluation. Useful for side-effectful generators that need some code to run for every call. Example:</p><pre><code class="ml">let gensym = let r = ref 0 in fun () -&gt; incr r; !r ;;
delay (fun () -&gt;
let name = gensym() in
small_int &gt;&gt;= fun i -&gt; return (name,i)
)</code></pre><dl><dt>since</dt><dd>0.4</dd></dl></dd></dl><dl><dt class="spec value" id="val-choose"><a href="#val-choose" class="anchor"></a><code><span class="keyword">val</span> choose : <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> list</span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> option</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Choose a generator within the list.</p></dd></dl><dl><dt class="spec value" id="val-choose_exn"><a href="#val-choose_exn" class="anchor"></a><code><span class="keyword">val</span> choose_exn : <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> list</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Like <a href="index.html#val-choose"><code>choose</code></a> but without option.</p><dl><dt>raises Invalid_argument</dt><dd><p>if the list is empty.</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-choose_array"><a href="#val-choose_array" class="anchor"></a><code><span class="keyword">val</span> choose_array : <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> array</span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> option</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Choose a generator within the array.</p></dd></dl><dl><dt class="spec value" id="val-choose_return"><a href="#val-choose_return" class="anchor"></a><code><span class="keyword">val</span> choose_return : <span><span class="type-var">'a</span> list</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Choose among the list.</p><dl><dt>raises Invalid_argument</dt><dd><p>if the list is empty.</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-replicate"><a href="#val-replicate" class="anchor"></a><code><span class="keyword">val</span> replicate : int <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> list</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>replicate n g</code> makes a list of <code>n</code> elements which are all generated randomly using <code>g</code>.</p></dd></dl><dl><dt class="spec value" id="val-sample_without_duplicates"><a href="#val-sample_without_duplicates" class="anchor"></a><code><span class="keyword">val</span> sample_without_duplicates : <span>cmp:<span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> int)</span></span> <span>&#45;&gt;</span> int <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> list</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>sample_without_replacement n g</code> makes a list of <code>n</code> elements which are all generated randomly using <code>g</code> with the added constraint that none of the generated random values are equal.</p><dl><dt>raises Invalid_argument</dt><dd><p>if <code>n &lt;= 0</code>.</p></dd></dl><dl><dt>since</dt><dd>2.4</dd></dl></dd></dl><dl><dt class="spec value" id="val-list_seq"><a href="#val-list_seq" class="anchor"></a><code><span class="keyword">val</span> list_seq : <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> list</span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> list</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Build random lists from lists of random generators.</p><dl><dt>since</dt><dd>0.4</dd></dl></dd></dl><dl><dt class="spec exception" id="exception-Pick_from_empty"><a href="#exception-Pick_from_empty" class="anchor"></a><code><span class="keyword">exception</span> </code><code><span class="exception">Pick_from_empty</span></code></dt><dd><dl><dt>since</dt><dd>0.16</dd></dl></dd></dl><dl><dt class="spec value" id="val-pick_list"><a href="#val-pick_list" class="anchor"></a><code><span class="keyword">val</span> pick_list : <span><span class="type-var">'a</span> list</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Pick an element at random from the list.</p><dl><dt>raises Pick_from_empty</dt><dd><p>if the list is empty.</p></dd></dl><dl><dt>since</dt><dd>0.16</dd></dl></dd></dl><dl><dt class="spec value" id="val-pick_array"><a href="#val-pick_array" class="anchor"></a><code><span class="keyword">val</span> pick_array : <span><span class="type-var">'a</span> array</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Pick an element at random from the array.</p><dl><dt>raises Pick_from_empty</dt><dd><p>if the array is empty.</p></dd></dl><dl><dt>since</dt><dd>0.16</dd></dl></dd></dl><dl><dt class="spec value" id="val-small_int"><a href="#val-small_int" class="anchor"></a><code><span class="keyword">val</span> small_int : <span>int <a href="index.html#type-t">t</a></span></code></dt><dd><p>A small int (100).</p></dd></dl><dl><dt class="spec value" id="val-int"><a href="#val-int" class="anchor"></a><code><span class="keyword">val</span> int : int <span>&#45;&gt;</span> <span>int <a href="index.html#type-t">t</a></span></code></dt><dd><p>Random int within the given range.</p></dd></dl><dl><dt class="spec value" id="val-int_range"><a href="#val-int_range" class="anchor"></a><code><span class="keyword">val</span> int_range : int <span>&#45;&gt;</span> int <span>&#45;&gt;</span> <span>int <a href="index.html#type-t">t</a></span></code></dt><dd><p>Inclusive range.</p></dd></dl><dl><dt class="spec value" id="val-small_float"><a href="#val-small_float" class="anchor"></a><code><span class="keyword">val</span> small_float : <span>float <a href="index.html#type-t">t</a></span></code></dt><dd><p>A reasonably small float (100.0).</p><dl><dt>since</dt><dd>0.6.1</dd></dl></dd></dl><dl><dt class="spec value" id="val-float"><a href="#val-float" class="anchor"></a><code><span class="keyword">val</span> float : float <span>&#45;&gt;</span> <span>float <a href="index.html#type-t">t</a></span></code></dt><dd><p>Random float within the given range.</p><dl><dt>since</dt><dd>0.6.1</dd></dl></dd></dl><dl><dt class="spec value" id="val-float_range"><a href="#val-float_range" class="anchor"></a><code><span class="keyword">val</span> float_range : float <span>&#45;&gt;</span> float <span>&#45;&gt;</span> <span>float <a href="index.html#type-t">t</a></span></code></dt><dd><p>Inclusive range. <code>float_range a b</code> assumes <code>a &lt; b</code>.</p><dl><dt>since</dt><dd>0.6.1</dd></dl></dd></dl><dl><dt class="spec value" id="val-split"><a href="#val-split" class="anchor"></a><code><span class="keyword">val</span> split : int <span>&#45;&gt;</span> <span><span><span>(int * int)</span> option</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Split a positive value <code>n</code> into <code>n1,n2</code> where <code>n = n1 + n2</code>.</p><dl><dt>returns</dt><dd><p><code>None</code> if the value is too small.</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-split_list"><a href="#val-split_list" class="anchor"></a><code><span class="keyword">val</span> split_list : int <span>&#45;&gt;</span> <span>len:int</span> <span>&#45;&gt;</span> <span><span><span>int list</span> option</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Split a value <code>n</code> into a list of values whose sum is <code>n</code> and whose length is <code>length</code>. The list is never empty and does not contain <code>0</code>.</p><dl><dt>raises Invalid_argument</dt><dd><p>if <code>len &lt;= 1</code>.</p></dd></dl><dl><dt>returns</dt><dd><p><code>None</code> if the value is too small.</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-retry"><a href="#val-retry" class="anchor"></a><code><span class="keyword">val</span> retry : <span>?&#8288;max:int</span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> option</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> option</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>retry g</code> calls <code>g</code> until it returns some value, or until the maximum number of retries was reached. If <code>g</code> fails, then it counts for one iteration, and the generator retries.</p><dl><dt>parameter max:</dt><dd><p>maximum number of retries. Default <code>10</code>.</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-try_successively"><a href="#val-try_successively" class="anchor"></a><code><span class="keyword">val</span> try_successively : <span><span><span><span class="type-var">'a</span> option</span> <a href="index.html#type-t">t</a></span> list</span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> option</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>try_successively l</code> tries each generator of <code>l</code>, one after the other. If some generator succeeds its result is returned, else the next generator is tried.</p></dd></dl><dl><dt class="spec value" id="val-(&lt;?&gt;)"><a href="#val-(&lt;?&gt;)" class="anchor"></a><code><span class="keyword">val</span> (&lt;?&gt;) : <span><span><span class="type-var">'a</span> option</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> option</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> option</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>a &lt;?&gt; b</code> is a choice operator. It first tries <code>a</code>, and returns its result if successful. If <code>a</code> fails, then <code>b</code> is returned.</p></dd></dl><dl><dt class="spec value" id="val-fix"><a href="#val-fix" class="anchor"></a><code><span class="keyword">val</span> fix : <span>?&#8288;sub1:<span><span>(<span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span>)</span> list</span></span> <span>&#45;&gt;</span> <span>?&#8288;sub2:<span><span>(<span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span>)</span> list</span></span> <span>&#45;&gt;</span> <span>?&#8288;subn:<span><span>(<span>int <a href="index.html#type-t">t</a></span> * <span>(<span><span><span class="type-var">'a</span> list</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span>)</span>)</span> list</span></span> <span>&#45;&gt;</span> <span>base:<span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></span> <span>&#45;&gt;</span> <span>int <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Recursion combinators, for building recursive values. The integer generator is used to provide fuel. The <code>sub_</code> generators should use their arguments only once!</p><dl><dt>parameter sub1</dt><dd><p>cases that recurse on one value.</p></dd></dl><dl><dt>parameter sub2</dt><dd><p>cases that use the recursive gen twice.</p></dd></dl><dl><dt>parameter subn</dt><dd><p>cases that use a list of recursive cases.</p></dd></dl></dd></dl><section><header><h5 id="applicative"><a href="#applicative" class="anchor"></a>Applicative</h5></header><dl><dt class="spec value" id="val-pure"><a href="#val-pure" class="anchor"></a><code><span class="keyword">val</span> pure : <span class="type-var">'a</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dt class="spec value" id="val-(&lt;*&gt;)"><a href="#val-(&lt;*&gt;)" class="anchor"></a><code><span class="keyword">val</span> (&lt;*&gt;) : <span><span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt></dl><div><div class="spec include"><div class="doc"><p>Let operators on OCaml &gt;= 4.08.0, nothing otherwise</p><dl><dt>since</dt><dd>2.8</dd></dl><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../CCShimsMkLet_/index.html#module-type-S">CCShimsMkLet_.S</a> <span class="keyword">with</span> <span class="keyword">type</span> <span>'a <a href="../CCShimsMkLet_/module-type-S/index.html#type-t_let">t_let</a></span> := <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></span></summary><dl><dt class="spec type" id="type-t_let"><a href="#type-t_let" class="anchor"></a><code><span class="keyword">type</span> <span>'a t_let</span></code></dt></dl><dl><dt class="spec value" id="val-let+"><a href="#val-let+" class="anchor"></a><code><span class="keyword">val</span> let+ : <span><span class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span></code></dt><dt class="spec value" id="val-and+"><a href="#val-and+" class="anchor"></a><code><span class="keyword">val</span> and+ : <span><span class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span> <span>&#45;&gt;</span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="index.html#type-t_let">t_let</a></span></code></dt><dt class="spec value" id="val-let*"><a href="#val-let*" class="anchor"></a><code><span class="keyword">val</span> let* : <span><span class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span></code></dt><dt class="spec value" id="val-and*"><a href="#val-and*" class="anchor"></a><code><span class="keyword">val</span> and* : <span><span class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span> <span>&#45;&gt;</span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="index.html#type-t_let">t_let</a></span></code></dt></dl></details></div></div></div></section><section><header><h5 id="run-a-generator"><a href="#run-a-generator" class="anchor"></a>Run a generator</h5></header><dl><dt class="spec value" id="val-run"><a href="#val-run" class="anchor"></a><code><span class="keyword">val</span> run : <span>?&#8288;st:<a href="index.html#type-state">state</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p>Using a random state (possibly the one in argument) run a generator.</p></dd></dl></section></div></body></html>