Jeśli ograniczasz się do pełnego cyklu LCG PRNG, odpowiedź jest łatwa, z definicji jest to po prostu .m
Aby znaleźć okres niepełnego cyklu PRG dla LCG dla danego materiału siewnego, wystarczy policzyć liczbę iteracji PRNG, aż ponownie wygeneruje wartość materiału siewnego.
Z przywołanej strony wikipedii :
Długość okresu
Okres ogólnej LCG jest co najwyżej , a dla niektórych wyborów znacznie mniej. Pod warunkiem, że jest niezerowe, LCG będzie miało pełny okres dla wszystkich wartości nasion, jeśli i tylko jeśli :mc
- c i są względnie pierwsze ,m
- a−1 można podzielić przez wszystkie czynniki pierwszemm
- a−1 jest wielokrotnością 4, jeśli jest wielokrotnością 4.m
Podczas gdy LCG są w stanie wytwarzać przyzwoite liczby pseudolosowe , jest to niezwykle wrażliwe na wybór parametrów , oraz .cma
Historycznie złe wybory doprowadziły do nieskutecznych wdrożeń LCG. Szczególnie ilustrującym tego przykładem jest RANDU, który był szeroko stosowany na początku lat siedemdziesiątych i doprowadził do wielu wyników, które są obecnie kwestionowane z powodu zastosowania tego słabego LCG.
Dlaczego chcesz użyć generatora pełnego cyklu
Jeśli nie ograniczysz się do pełnego cyklu PRNG LCG, podejmujesz ogromne ryzyko .
Jeśli nie wiesz, że dany LCG ma pełny cykl, możesz skończyć z generatorem o dowolnej liczbie wzajemnie różnych sekwencji, z których niektóre mogą być żenująco małe i mieć przerażającą losowość, być może nawet gorszą niż niesławny generator RANDU .
Naprawdę nie chcesz sprawdzać każdej możliwej wartości początkowej, aby upewnić się, że generuje ona sekwencję wystarczająco długą dla twojej aplikacji.
Dalsza lektura
Aby uzyskać doskonały starter na pseudolosowych generatorach liczb, zdecydowanie polecam przeczytanie rozdziału Przepisy liczbowe na temat liczb losowych.