Ostatnia odpowiedź wspomniała o zastosowaniu generatorów liczb losowych Fortuna lub Mersenne Twister ( RNG ) do zaszczepienia symulacji Monte Carlo . Nie słyszałem o Fortunie, więc spojrzałem na nią - wygląda na to, że jest przeznaczona głównie do użytku kryptograficznego.
Obecnie używam Mersenne Twister w kodzie produkcyjnym do uruchomienia algorytmu K-Means.
Który (Fortuna lub Mersenne Twister) jest uważany za najlepszy do zastosowań w „wysiewie algorytmicznym” (np. W wysiewie Monte Carlo i K-Means)? A może jest to „podrzucanie” - czyli używanie najwygodniejszego.
Z miejsca, w którym siedzę, „najlepszy” powinien zapewniać losowe liczby najwyższej jakości, działać szybko i (ewentualnie) mieć mało pamięci. Spośród nich jakość jest prawdopodobnie najważniejsza dla większości z nas.
RAND_MAX=32768
możliwe wartości. Obecnie używam MT do symulacji raytracingu w Monte Carlo. Jednak nie widzę MT jako wąskiego gardła wydajności w moim programie profilującym, prawdopodobnie dlatego, że robię „losowe” generowanie rzeczy takich jak kierunki promieni jako proces wstępny . Na przykład mogę wygenerować tablicę 100 000 promieni podczas uruchamiania, przechowywać je w tablicy i losowo wybrać pozycję początkową tablicy w czasie wykonywania (uruchamianie dla około 10 000 promieni z kolekcji). Ma to stosunkowo wysoki narzut pamięci w zamian za dobre rozkłady liczb losowych.