RANLUX
Wygląd
RANLUX jest generatorem liczb pseudolosowych zaproponowanym przez Martina Lüschera . Bazuje on na szybkim generatorze RCARRY zmodyfikowanym tak, by charakteryzował się wysoką chaotycznością generowanego ciągu kosztem czasu wykonania. Używa on parametru, który określa, jak wiele wyników będzie pominiętych. Działa jak RCARRY, lecz po 24 wynikach, które daje na zewnątrz, następnie wykonuje o 24 mniej niż wartość zadanego parametru odrzucanych wyników.
Procedura ma 5 stopni "luksusu" gdzie losowość liczona jest kosztem czasu:
- poziom 0 (p=24): równoważne oryginalnemu RCARRY Marsaglii i Zamana, bardzo długi cykl, ale nie przechodzi przynajmniej testu urodzinowego i spektralnego. Czas wykonania = 24.1 taktu na zwracaną wartość.
- poziom 1 (p=48): znaczna poprawa w porównaniu ze stopniem 0, przechodzi test urodzinowy, ale nadal nie przechodzi testu spektralnego. Czas wykonania = 44.3 taktu.
- poziom 2 (p=97): przechodzi wszystkie znane testy, ale teoretycznie pozostaje ułomny. Czas wykonania = 85.1 taktu.
- poziom 3 (p=223): DOMYŚLNA WARTOŚĆ. Jakiekolwiek teoretycznie możliwe korelacje mają bardzo małą szansę zostać zaobserwowane. Czas wykonania = 190.5 taktu.
- poziom 4 (p=389): najwyższy możliwy luksus, wszystkie 24 bity chaotyczne. Czas wykonania = 329.5 taktu.
Pomiary czasu w Visual C++ na Intel i3 3.6 GHz, gdzie RCARRY osiągnął 15.7 taktu.
Przypisy
[edytuj | edytuj kod]- A Portable High-Quality Random Number Generator for Lattice Field Theory Simulations, Martin Luscher
- Biblioteka GSL, plik rng\ranlux.c