1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
.. _uniform_random_generator:
Uniform Random Generator
------------------------
| Generating simulations according to a distribution is based on
generating simulations according to a Uniform distribution on
:math:`[0,1]` : several techniques exist then to transform a
realization according to a uniform distribution onto a realization
according to a distribution which cumulative distribution function is
:math:`F` (refer to for each distribution).
| Thus, the quality of the random generation of simulation is entirely
based on the quality of the *deterministic* algorithm which simulates
realizations of the Uniform(0,1) distribution.
| We use the DSFTM algorithm described here, which is the
acronym of **D**\ ouble precision **S**\ IMD oriented **F**\ ast
**M**\ ersenne **T**\ wister.
Each character is detailed of the acronym is detailed :
- **S = SIMD = Single Instruction Multiple Data**: the DSFMT algorithm
is able to detect and take profit of the capacity of the
microprocessor to realise several operations at a time.
- **F = Fast**: the transformation of the :math:`k`-th state vector of
the random generator into the :math:`(k+1)`-th state vector is
written in order to optimize its performance.
- **MT = Mersenne Twister**: the algorithm characteristics are the
following ones :
#. the algorithm is initialized with a high Mersenne Number, of type
:math:`2^{2^n}-1`, with :math:`n=19937`.
#. the algorithm period :math:`T` depends on that initial point :
:math:`T = 2^{19937} \simeq 10^{6000}`. As a general way, the bad
effects of the periodicity of the algorithm arise as soon as the
number of simulations is greater than :math:`\, \simeq \sqrt{T}`
simulations. Here, we have :
:math:`\sqrt{T} =2^{9968}\simeq 10^{3000}`.
#. the realizations of the DSFMT algorithm are uniformly distributed
within :math:`[0,1]^n` until :math:`n=624`.
.. topic:: API:
- See :class:`~openturns.RandomGenerator`
- See :class:`~openturns.RandomGeneratorState` to save the generator state
.. topic:: Examples:
- See :doc:`/auto_numerical_methods/general_methods/plot_random_generator`
|