summaryrefslogtreecommitdiff
path: root/doc/source/reference/random
diff options
context:
space:
mode:
Diffstat (limited to 'doc/source/reference/random')
-rw-r--r--doc/source/reference/random/bit_generators/index.rst25
-rw-r--r--doc/source/reference/random/index.rst22
-rw-r--r--doc/source/reference/random/performance.rst114
3 files changed, 80 insertions, 81 deletions
diff --git a/doc/source/reference/random/bit_generators/index.rst b/doc/source/reference/random/bit_generators/index.rst
index 7f88231bd..0b3d563ec 100644
--- a/doc/source/reference/random/bit_generators/index.rst
+++ b/doc/source/reference/random/bit_generators/index.rst
@@ -12,6 +12,27 @@ setting the state, jumping or advancing the state, and for accessing
low-level wrappers for consumption by code that can efficiently
access the functions provided, e.g., `numba <https://numba.pydata.org>`_.
+Supported BitGenerators
+=======================
+
+The included BitGenerators are:
+
+* MT19937 - The standard Python BitGenerator. Adds a `~mt19937.MT19937.jumped`
+ function that returns a new generator with state as-if ``2**128`` draws have
+ been made.
+* PCG-64 - Fast generator that support many parallel streams and
+ can be advanced by an arbitrary amount. See the documentation for
+ :meth:`~.PCG64.advance`. PCG-64 has a period of
+ :math:`2^{128}`. See the `PCG author's page`_ for more details about
+ this class of PRNG.
+* Philox - a counter-based generator capable of being advanced an
+ arbitrary number of steps or generating independent streams. See the
+ `Random123`_ page for more details about this class of bit generators.
+
+.. _`PCG author's page`: http://www.pcg-random.org/
+.. _`Random123`: https://www.deshawresearch.com/resources_random123.html
+
+
.. toctree::
:maxdepth: 1
@@ -32,8 +53,8 @@ generate BitGenerators that are correlated or overlap within a few samples.
NumPy uses a `SeedSequence` class to mix the seed in a reproducible way that
introduces the necessary entropy to produce independent and largely non-
-overlapping streams. Small seeds may still be unable to reach all possible
-initialization states, which can cause biases among an ensemble of small-seed
+overlapping streams. Small seeds are unable to fill the complete range of
+initializaiton states, and lead to biases among an ensemble of small-seed
runs. For many cases, that doesn't matter. If you just want to hold things in
place while you debug something, biases aren't a concern. For actual
simulations whose results you care about, let ``SeedSequence(None)`` do its
diff --git a/doc/source/reference/random/index.rst b/doc/source/reference/random/index.rst
index 109302b7a..f32853e7c 100644
--- a/doc/source/reference/random/index.rst
+++ b/doc/source/reference/random/index.rst
@@ -159,28 +159,6 @@ one of two ways:
* :ref:`independent-streams`
* :ref:`jump-and-advance`
-Supported BitGenerators
------------------------
-The included BitGenerators are:
-
-* MT19937 - The standard Python BitGenerator. Adds a `~mt19937.MT19937.jumped`
- function that returns a new generator with state as-if ``2**128`` draws have
- been made.
-* PCG-64 - Fast generator that support many parallel streams and
- can be advanced by an arbitrary amount. See the documentation for
- :meth:`~.PCG64.advance`. PCG-64 has a period of
- :math:`2^{128}`. See the `PCG author's page`_ for more details about
- this class of PRNG.
-* Xorshiro256** and Xorshiro512** - The most recently introduced XOR,
- shift, and rotate generator. Supports ``jumped`` and so can be used in
- parallel applications. See the documentation for
-* ThreeFry and Philox - counter-based generators capable of being advanced an
- arbitrary number of steps or generating independent streams. See the
- `Random123`_ page for more details about this class of bit generators.
-
-.. _`PCG author's page`: http://www.pcg-random.org/
-.. _`Random123`: https://www.deshawresearch.com/resources_random123.html
-
Concepts
--------
.. toctree::
diff --git a/doc/source/reference/random/performance.rst b/doc/source/reference/random/performance.rst
index c1b501f8f..3e5c20e3a 100644
--- a/doc/source/reference/random/performance.rst
+++ b/doc/source/reference/random/performance.rst
@@ -29,18 +29,18 @@ The column labeled MT19973 is used the same 32-bit generator as
:class:`~generator.Generator`.
.. csv-table::
- :header: ,Xoshiro256**,Xoshiro512**,DSFMT,PCG64,MT19937,Philox,RandomState,ThreeFry
- :widths: 14,14,14,14,14,14,14,14,14
+ :header: ,PCG64,MT19937,Philox,RandomState
+ :widths: 14,14,14,14,14
- 32-bit Unsigned Ints,2.6,2.9,3.5,3.2,3.3,4.8,3.2,7.6
- 64-bit Unsigned Ints,3.3,4.3,5.7,4.8,5.7,6.9,5.7,12.8
- Uniforms,3.4,4.0,3.2,5.0,7.3,8.0,7.3,12.8
- Normals,7.9,9.0,11.8,11.3,13.0,13.7,34.4,18.1
- Exponentials,4.7,5.2,7.4,6.7,7.9,8.6,40.3,14.7
- Gammas,29.1,27.5,28.5,30.6,34.2,35.1,58.1,47.6
- Binomials,22.7,23.1,21.1,25.7,27.7,28.4,25.9,32.1
- Laplaces,38.5,38.1,36.9,41.1,44.5,45.4,46.9,50.2
- Poissons,46.9,50.9,46.4,58.1,68.4,70.2,86.0,88.2
+ 32-bit Unsigned Ints,3.2,3.3,4.8,3.2
+ 64-bit Unsigned Ints,4.8,5.7,6.9,5.7
+ Uniforms,5.0,7.3,8.0,7.3
+ Normals,11.3,13.0,13.7,34.4
+ Exponentials,6.7,7.9,8.6,40.3
+ Gammas,30.6,34.2,35.1,58.1
+ Binomials,25.7,27.7,28.4,25.9
+ Laplaces,41.1,44.5,45.4,46.9
+ Poissons,58.1,68.4,70.2,86.0
The next table presents the performance in percentage relative to values
@@ -48,19 +48,19 @@ generated by the legagy generator, `RandomState(MT19937())`. The overall
performance was computed using a geometric mean.
.. csv-table::
- :header: ,Xoshiro256**,Xoshiro256**,DSFMT,PCG64,MT19937,Philox,ThreeFry
- :widths: 14,14,14,14,14,14,14,14
-
- 32-bit Unsigned Ints,124,113,93,100,99,67,43
- 64-bit Unsigned Ints,174,133,100,118,100,83,44
- Uniforms,212,181,229,147,100,91,57
- Normals,438,382,291,304,264,252,190
- Exponentials,851,770,547,601,512,467,275
- Gammas,200,212,204,190,170,166,122
- Binomials,114,112,123,101,93,91,81
- Laplaces,122,123,127,114,105,103,93
- Poissons,183,169,185,148,126,123,98
- Overall,212,194,180,167,145,131,93
+ :header: ,PCG64,MT19937,Philox
+ :widths: 14,14,14,14
+
+ 32-bit Unsigned Ints,100,99,67
+ 64-bit Unsigned Ints,118,100,83
+ Uniforms,147,100,91
+ Normals,304,264,252
+ Exponentials,601,512,467
+ Gammas,190,170,166
+ Binomials,101,93,91
+ Laplaces,114,105,103
+ Poissons,148,126,123
+ Overall,167,145,131
.. note::
@@ -81,16 +81,16 @@ across tables.
64-bit Linux
~~~~~~~~~~~~
-=================== ======= ========= ======= ======== ========== ============
-Distribution DSFMT MT19937 PCG64 Philox ThreeFry Xoshiro256
-=================== ======= ========= ======= ======== ========== ============
-32-bit Unsigned Int 99.3 100 113.9 72.1 48.3 117.1
-64-bit Unsigned Int 105.7 100 143.3 89.7 48.1 161.7
-Uniform 222.1 100 181.5 90.8 59.9 204.7
-Exponential 110.8 100 145.5 92.5 55.0 177.1
-Normal 113.2 100 121.4 98.3 71.9 162.0
-**Overall** 123.9 100 139.3 88.2 56.0 161.9
-=================== ======= ========= ======= ======== ========== ============
+=================== ========= ======= ========
+Distribution MT19937 PCG64 Philox
+=================== ========= ======= ========
+32-bit Unsigned Int 100 113.9 72.1
+64-bit Unsigned Int 100 143.3 89.7
+Uniform 100 181.5 90.8
+Exponential 100 145.5 92.5
+Normal 100 121.4 98.3
+**Overall** 100 139.3 88.2
+=================== ========= ======= ========
64-bit Windows
@@ -98,16 +98,16 @@ Normal 113.2 100 121.4 98.3 71.9 1
The performance on 64-bit Linux and 64-bit Windows is broadly similar.
-=================== ======= ========= ======= ======== ========== ============
-Distribution DSFMT MT19937 PCG64 Philox ThreeFry Xoshiro256
-=================== ======= ========= ======= ======== ========== ============
-32-bit Unsigned Int 122.8 100 134.9 44.1 72.3 133.1
-64-bit Unsigned Int 130.4 100 162.7 41.0 77.7 142.3
-Uniform 273.2 100 200.0 44.8 84.6 175.8
-Exponential 135.0 100 167.8 47.4 84.5 166.9
-Normal 115.3 100 135.6 60.3 93.6 169.6
-**Overall** 146.7 100 158.4 47.1 82.2 156.5
-=================== ======= ========= ======= ======== ========== ============
+=================== ========= ======= ========
+Distribution MT19937 PCG64 Philox
+=================== ========= ======= ========
+32-bit Unsigned Int 100 134.9 44.1
+64-bit Unsigned Int 100 162.7 41.0
+Uniform 100 200.0 44.8
+Exponential 100 167.8 47.4
+Normal 100 135.6 60.3
+**Overall** 100 158.4 47.1
+=================== ========= ======= ========
32-bit Windows
~~~~~~~~~~~~~~
@@ -116,20 +116,20 @@ The performance of 64-bit generators on 32-bit Windows is much lower than on 64-
operating systems due to register width. MT19937, the generator that has been
in NumPy since 2005, operates on 32-bit integers.
-=================== ======= ========= ======= ======== ========== ============
-Distribution DSFMT MT19937 PCG64 Philox ThreeFry Xoshiro256
-=================== ======= ========= ======= ======== ========== ============
-32-bit Unsigned Int 110.9 100 30.6 28.1 29.2 74.4
-64-bit Unsigned Int 104.7 100 24.2 23.7 22.7 72.7
-Uniform 247.0 100 26.7 28.4 27.8 78.8
-Exponential 110.1 100 32.1 32.6 30.5 89.6
-Normal 107.2 100 36.3 37.5 35.2 93.0
-**Overall** 127.6 100 29.7 29.7 28.8 81.3
-=================== ======= ========= ======= ======== ========== ============
+=================== ========= ======= ========
+Distribution MT19937 PCG64 Philox
+=================== ========= ======= ========
+32-bit Unsigned Int 100 30.6 28.1
+64-bit Unsigned Int 100 24.2 23.7
+Uniform 100 26.7 28.4
+Exponential 100 32.1 32.6
+Normal 100 36.3 37.5
+**Overall** 100 29.7 29.7
+=================== ========= ======= ========
.. note::
- Linux timings used Ubuntu 18.04 and GCC 7.4. Windows timings were made on Windows 10
- using Microsoft C/C++ Optimizing Compiler Version 19 (Visual Studio 2015). All timings
- were produced on a i5-3570 processor.
+ Linux timings used Ubuntu 18.04 and GCC 7.4. Windows timings were made on
+ Windows 10 using Microsoft C/C++ Optimizing Compiler Version 19 (Visual
+ Studio 2015). All timings were produced on a i5-3570 processor.