diff options
Diffstat (limited to 'lib/stdlib/doc')
| -rw-r--r-- | lib/stdlib/doc/src/Makefile | 1 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/lists.xml | 2 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/maps.xml | 2 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/rand.xml | 246 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/random.xml | 3 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/ref_man.xml | 1 | ||||
| -rw-r--r-- | lib/stdlib/doc/src/specs.xml | 1 | 
7 files changed, 254 insertions, 2 deletions
| diff --git a/lib/stdlib/doc/src/Makefile b/lib/stdlib/doc/src/Makefile index ce1e19a2a4..a4a2ed9931 100644 --- a/lib/stdlib/doc/src/Makefile +++ b/lib/stdlib/doc/src/Makefile @@ -82,6 +82,7 @@ XML_REF3_FILES = \  	proplists.xml \  	qlc.xml \  	queue.xml \ +	rand.xml \  	random.xml \  	re.xml \  	sets.xml \ diff --git a/lib/stdlib/doc/src/lists.xml b/lib/stdlib/doc/src/lists.xml index ee3c51c62c..dcc08d008b 100644 --- a/lib/stdlib/doc/src/lists.xml +++ b/lib/stdlib/doc/src/lists.xml @@ -176,7 +176,7 @@ filtermap(Fun, List1) ->                             false -> Acc;                             true -> [Elem|Acc];                             {true,Value} -> [Value|Acc] -                       end, +                       end                  end, [], List1).</code>          <p>Example:</p>          <pre> diff --git a/lib/stdlib/doc/src/maps.xml b/lib/stdlib/doc/src/maps.xml index 59c26d9896..e46068230a 100644 --- a/lib/stdlib/doc/src/maps.xml +++ b/lib/stdlib/doc/src/maps.xml @@ -339,7 +339,7 @@ false</code>  			<fsummary></fsummary>  			<desc>  				<p> -					Returns a complete list of values, in arbitrary order, contained in map <c>M</c>. +					Returns a complete list of values, in arbitrary order, contained in map <c>Map</c>.  				</p>  				<p>  					The call will fail with a <c>{badmap,Map}</c> exception if <c><anno>Map</anno></c> is not a map. diff --git a/lib/stdlib/doc/src/rand.xml b/lib/stdlib/doc/src/rand.xml new file mode 100644 index 0000000000..178afda5a0 --- /dev/null +++ b/lib/stdlib/doc/src/rand.xml @@ -0,0 +1,246 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE erlref SYSTEM "erlref.dtd"> + +<erlref> +  <header> +    <copyright> +      <year>2015</year> +      <holder>Ericsson AB. All Rights Reserved.</holder> +    </copyright> +    <legalnotice> +      The contents of this file are subject to the Erlang Public License, +      Version 1.1, (the "License"); you may not use this file except in +      compliance with the License. You should have received a copy of the +      Erlang Public License along with this software. If not, it can be +      retrieved online at http://www.erlang.org/. + +      Software distributed under the License is distributed on an "AS IS" +      basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +      the License for the specific language governing rights and limitations +      under the License. + +    </legalnotice> + +    <title>rand</title> +    <prepared></prepared> +    <responsible></responsible> +    <docno>1</docno> +    <approved></approved> +    <checked></checked> +    <date></date> +    <rev>A</rev> +    <file>rand.xml</file> +  </header> +  <module>rand</module> +  <modulesummary>Pseudo random number generation</modulesummary> +  <description> +    <p>Random number generator.</p> + +    <p>The module contains several different algorithms and can be +    extended with more in the future.  The current uniform +    distribution algorithms uses the +    <url href="http://xorshift.di.unimi.it"> +    scrambled Xorshift algorithms by Sebastiano Vigna</url> and the +    normal distribution algorithm uses the +    <url href="http://www.jstatsoft.org/v05/i08"> +      Ziggurat Method by Marsaglia and Tsang</url>. +    </p> + +    <p>The implemented algorithms are:</p> +    <taglist> +      <tag><c>exsplus</c></tag> <item>Xorshift116+, 58 bits precision and period of 2^116-1.</item> +      <tag><c>exs64</c></tag> <item>Xorshift64*, 64 bits precision and a period of 2^64-1.</item> +      <tag><c>exs1024</c></tag> <item>Xorshift1024*, 64 bits precision and a period of 2^1024-1.</item> +    </taglist> + +    <p>The current default algorithm is <c>exsplus</c>. The default +    may change in future. If a specific algorithm is required make +    sure to always use <seealso marker="#seed-1">seed/1</seealso> +    to initialize the state. +    </p> + +    <p>Every time a random number is requested, a state is used to +    calculate it and a new state produced. The state can either be +    implicit or it can be an explicit argument and return value. +    </p> + +    <p>The functions with implicit state use the process dictionary +    variable <c>rand_seed</c> to remember the current state.</p> + +    <p>If a process calls <seealso marker="#uniform-0">uniform/0</seealso> or +    <seealso marker="#uniform-1">uniform/1</seealso> without +    setting a seed first, <seealso marker="#seed-1">seed/1</seealso> +    is called automatically with the default algorithm and creates a +    non-constant seed.</p> + +    <p>The functions with explicit state never use the process +    dictionary.</p> + +    <p>Examples:</p> +    <pre> +      %% Simple usage. Creates and seeds the default algorithm +      %% with a non-constant seed if not already done. +      R0 = rand:uniform(), +      R1 = rand:uniform(), + +      %% Use a given algorithm. +      _ = rand:seed(exs1024), +      R2 = rand:uniform(), + +      %% Use a given algorithm with a constant seed. +      _ = rand:seed(exs1024, {123, 123534, 345345}), +      R3 = rand:uniform(), + +      %% Use the functional api with non-constant seed. +      S0 = rand:seed_s(exsplus), +      {R4, S1} = rand:uniform_s(S0), + +      %% Create a standard normal deviate. +      {SND0, S2} = rand:normal_s(S1), +    </pre> + +    <note><p>This random number generator is not cryptographically +    strong. If a strong cryptographic random number generator is +    needed, use one of functions in the +    <seealso marker="crypto:crypto">crypto</seealso> +    module, for example <c>crypto:rand_bytes/1</c>.</p></note> +  </description> +  <datatypes> +    <datatype> +      <name name="alg"/> +    </datatype> + +    <datatype> +      <name name="state"/> +      <desc><p>Algorithm dependent state.</p></desc> +    </datatype> + +    <datatype> +      <name name="export_state"/> +      <desc><p>Algorithm dependent state which can be printed or saved to file.</p></desc> +    </datatype> +  </datatypes> + +  <funcs> +    <func> +      <name name="seed" arity="1"/> +      <fsummary>Seed random number generator</fsummary> +      <desc> +	<marker id="seed-1"/> +	<p>Seeds random number generation with the given algorithm and time dependent +	data if <anno>AlgOrExpState</anno> is an algorithm.</p> +	<p>Otherwise recreates the exported seed in the process +	dictionary, and returns the state. +	<em>See also:</em> <seealso marker="#export_seed-0">export_seed/0</seealso>.</p> +      </desc> +    </func> +    <func> +      <name name="seed_s" arity="1"/> +      <fsummary>Seed random number generator</fsummary> +      <desc> +	<p>Seeds random number generation with the given algorithm and time dependent +	data if <anno>AlgOrExpState</anno> is an algorithm.</p> +	<p>Otherwise recreates the exported seed and returns the state. +	<em>See also:</em> <seealso marker="#export_seed-0">export_seed/0</seealso>.</p> +      </desc> +    </func> +    <func> +      <name name="seed" arity="2"/> +      <fsummary>Seed the random number generation</fsummary> +      <desc> +	<p>Seeds random number generation with the given algorithm and +	integers in the process dictionary and returns +	the state.</p> +      </desc> +    </func> +    <func> +      <name name="seed_s" arity="2"/> +      <fsummary>Seed the random number generation</fsummary> +      <desc> +	<p>Seeds random number generation with the given algorithm and +	integers and returns the state.</p> +      </desc> +    </func> + +    <func> +      <name name="export_seed" arity="0"/> +      <fsummary>Export the random number generation state</fsummary> +      <desc><marker id="export_seed-0"/> +      <p>Returns the random number state in an external format. +      To be used with <seealso marker="#seed-1">seed/1</seealso>.</p> +      </desc> +    </func> + +    <func> +      <name name="export_seed_s" arity="1"/> +      <fsummary>Export the random number generation state</fsummary> +      <desc><marker id="export_seed_s-1"/> +      <p>Returns the random number generator state in an external format. +      To be used with <seealso marker="#seed-1">seed/1</seealso>.</p> +      </desc> +    </func> + +    <func> +      <name name="uniform" arity="0"/> +      <fsummary>Return a random float</fsummary> +      <desc> +	<marker id="uniform-0"/> +        <p>Returns a random float uniformly distributed in the value +        range <c>0.0 < <anno>X</anno> < 1.0 </c> and +        updates the state in the process dictionary.</p> +      </desc> +    </func> +    <func> +      <name name="uniform_s" arity="1"/> +      <fsummary>Return a random float</fsummary> +      <desc> +        <p>Given a state, <c>uniform_s/1</c> returns a random float +        uniformly distributed in the value range <c>0.0 < +        <anno>X</anno> < 1.0</c> and a new state.</p> +      </desc> +    </func> + +    <func> +      <name name="uniform" arity="1"/> +      <fsummary>Return a random integer</fsummary> +      <desc> +	<marker id="uniform-1"/> +        <p>Given an integer <c><anno>N</anno> >= 1</c>, +        <c>uniform/1</c> returns a random integer uniformly +        distributed in the value range +	<c>1 <= <anno>X</anno> <= <anno>N</anno></c> and +        updates the state in the process dictionary.</p> +      </desc> +    </func> +    <func> +      <name name="uniform_s" arity="2"/> +      <fsummary>Return a random integer</fsummary> +      <desc> +        <p>Given an integer <c><anno>N</anno> >= 1</c> and a state, +        <c>uniform_s/2</c> returns a random integer uniformly +        distributed in the value range <c>1 <= <anno>X</anno> <= +        <anno>N</anno></c> and a new state.</p> +      </desc> +    </func> + +    <func> +      <name name="normal" arity="0"/> +      <fsummary>Return a standard normal distributed random float</fsummary> +      <desc> +        <p>Returns a standard normal deviate float (that is, the mean +        is 0 and the standard deviation is 1) and updates the state in +        the process dictionary.</p> +      </desc> +    </func> +    <func> +      <name name="normal_s" arity="1"/> +      <fsummary>Return a standard normal distributed random float</fsummary> +      <desc> +        <p>Given a state, <c>normal_s/1</c> returns a standard normal +        deviate float (that is, the mean is 0 and the standard +        deviation is 1) and a new state.</p> +      </desc> +    </func> + +  </funcs> +</erlref> diff --git a/lib/stdlib/doc/src/random.xml b/lib/stdlib/doc/src/random.xml index 2cc621ffc3..e475cda23d 100644 --- a/lib/stdlib/doc/src/random.xml +++ b/lib/stdlib/doc/src/random.xml @@ -48,6 +48,9 @@      <p>It should be noted that this random number generator is not cryptographically         strong. If a strong cryptographic random number generator is needed for        example <c>crypto:rand_bytes/1</c> could be used instead.</p> +      <note><p>The new and improved <seealso +      marker="stdlib:rand">rand</seealso> module should be used +      instead of this module.</p></note>    </description>    <datatypes>      <datatype> diff --git a/lib/stdlib/doc/src/ref_man.xml b/lib/stdlib/doc/src/ref_man.xml index 94c1fb55c2..eee4a68ca1 100644 --- a/lib/stdlib/doc/src/ref_man.xml +++ b/lib/stdlib/doc/src/ref_man.xml @@ -79,6 +79,7 @@    <xi:include href="proplists.xml"/>    <xi:include href="qlc.xml"/>    <xi:include href="queue.xml"/> +  <xi:include href="rand.xml"/>    <xi:include href="random.xml"/>    <xi:include href="re.xml"/>    <xi:include href="sets.xml"/> diff --git a/lib/stdlib/doc/src/specs.xml b/lib/stdlib/doc/src/specs.xml index 6ae0154800..0418bf7b22 100644 --- a/lib/stdlib/doc/src/specs.xml +++ b/lib/stdlib/doc/src/specs.xml @@ -45,6 +45,7 @@    <xi:include href="../specs/specs_proplists.xml"/>    <xi:include href="../specs/specs_qlc.xml"/>    <xi:include href="../specs/specs_queue.xml"/> +  <xi:include href="../specs/specs_rand.xml"/>    <xi:include href="../specs/specs_random.xml"/>    <xi:include href="../specs/specs_re.xml"/>    <xi:include href="../specs/specs_sets.xml"/> | 
