Generatory liczb losowych

AdvancedMiner dostarcza kilka generatorów liczb losowych z rozkładem jednostajnym. Generatory posiadają dwie metody nextRand() i setSeed(int seed).

Lista dostępnych generatorów

  1. Knuth's substractive generator

    Knuth's substractive random number generator jest opisany w [1].

    Knuth's substractive random generator jest tworzony w następujący sposób

    KnuthSubstractiveGen().

  2. Generator liczb losowych o długim okresie L'Ecuyer z tasowaniem Bays-Durham

    Generator liczb losowych o długim okresie L'Ecuyer z tasowaniem Bays-Durham jest oparty o dwa kongruencyjne generatory:

    i

    Okres generatora wynosi w przybliżeniu 2.3*10^18. Po raz pierwszy został opisany w [2].

    LEcuyerShuffleGen() tworzy generator L'Ecuyer z tasowaniem Bays-Durham o długim okresie

  3. Generator Marsaglia, Zaman i Tsang

    Generator liczb losowych Marsaglia, Zaman i Tsang jest kombinacją dwóch prostych generatorów Fibonacci'ego. Okres generatora wynosi w przybliżeniu 2.23*10^43. Poraz pierwszy został opisany w [3]

    MZTGen() tworzy obiekt generatora liczb losowych Marsaglia, Zaman i Tsang

  4. Kongruencyjny generator Park-Miller'a

    Kongruencyjny generator Park-Miller jest prostym kongruencyjnym generatorem utworzonym przez Park'a i Miller'a

    Okres generatora wynosi w przybliżeniu 2.1 * 10^9.Poraz pierwszy został opisany w [4].

    ParkMillerCongruentialGen() tworzy obiekt kongruencyjnego generatora Park-Miller.

  5. Kongruencyjny generator Park-Miller z tasowaniem

    To jest prosty kongruencyjny generator liczb losowych z tasowaniem Bays-Durham

    Okres generatora wynosi w przybliżeniu 2.1 * 10^9. Jest opisany w[1].

    ParkMillerShuffleCongruentialGen() tworzy obiekt kongruencyjnego generatora Park-Miller'a z tasowaniem.

Przykład 8.7. Random number generator

from biz.sc.math.generators import *

_random = KnuthSubstractiveGen() 
_random.setSeed(123)

for i in range (0,10):
    print "%1.3f" % _random.nextRand()

Output:

0.543
0.553
0.127
0.521
0.093
0.564
0.259
0.037
0.966
0.635