.. _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