From MJanik
(Difference between revisions)
|
|
Line 14: |
Line 14: |
| x[j+1] = ( a*x[j] + c ) mod m | | x[j+1] = ( a*x[j] + c ) mod m |
| </code> | | </code> |
- |
| |
| | | |
| Generator taki nazywamy generatorem LCG - czyli generatorem liniowym kongruentnym. Zadanie pewnej wartości poczatkowej x[0] definiuje nam zatem cały ciąg. Ponadto jest to ciąg okresowy. Okres zależy od doboru parametrów i przy spelnieniu kilku warunków osiąga maksymalnie wartość m. Warunki te to: | | Generator taki nazywamy generatorem LCG - czyli generatorem liniowym kongruentnym. Zadanie pewnej wartości poczatkowej x[0] definiuje nam zatem cały ciąg. Ponadto jest to ciąg okresowy. Okres zależy od doboru parametrów i przy spelnieniu kilku warunków osiąga maksymalnie wartość m. Warunki te to: |
Line 23: |
Line 22: |
| Dla uproszczenia należy przyjąć c = 0, otrzymując w ten sposób <b> multiplikatywny liniowy generator kongruentny (MLCG)</b>. | | Dla uproszczenia należy przyjąć c = 0, otrzymując w ten sposób <b> multiplikatywny liniowy generator kongruentny (MLCG)</b>. |
| * Wartości a oraz m powinny być łatwe do modyfikacji w programie. | | * Wartości a oraz m powinny być łatwe do modyfikacji w programie. |
| + | |
| + | Efektem działania makra powinny być trzy pliki: losowe1.dat, losowe2.dat, losowe3.dat, zawierające ciąg wygenerowanych liczb dla parametrów odpowiednio: |
| + | * m=7 i a=3, |
| + | * m=97 i a=23, |
| + | * m=32363 i a=157. |
| | | |
| ''Część druga:'' <b> test widmowy</b> | | ''Część druga:'' <b> test widmowy</b> |
Line 29: |
Line 33: |
| | | |
| Jeśli punkty będą rozłożone równomiernie generator można uznać za dobry. Jeśli zdecydowanie widać pewną okresowość - punkty powtarzają się wielokrotnie - generator nie działa poprawnie. Oczywiście na rozłożenie punktów wpływa jedynie dobór parametrów a i m. | | Jeśli punkty będą rozłożone równomiernie generator można uznać za dobry. Jeśli zdecydowanie widać pewną okresowość - punkty powtarzają się wielokrotnie - generator nie działa poprawnie. Oczywiście na rozłożenie punktów wpływa jedynie dobór parametrów a i m. |
| + | |
| + | * Do tworzenia wykresów widma poleca się użycie obiektów <code>TH2D</code> |
| + | |
| + | Wynikiem działania programu powinny być trzy wykresy widma uzyskane na podstawie uprzednio zapisanych plików losowe1.dat, losowe2.dat, losowe3.dat. |
| + | |
| + | "Część trzecia:" <b>Generacja liczb losowych oparta na transformacji rozkładu jednorodnego</b> |
Revision as of 09:28, 23 March 2012
Zadanie
Część pierwsza: liniowy kongruentny generator liczb losowych
Należy napisać generator liczb pseudolosowych oraz zapisać wygenerowane liczby do pliku.
Stworzony generator powinien opierać się na wzorze:
x[j+1] = ( a*x[j] + c ) mod m
Generator taki nazywamy generatorem LCG - czyli generatorem liniowym kongruentnym. Zadanie pewnej wartości poczatkowej x[0] definiuje nam zatem cały ciąg. Ponadto jest to ciąg okresowy. Okres zależy od doboru parametrów i przy spelnieniu kilku warunków osiąga maksymalnie wartość m. Warunki te to:
- c i m nie maja wspolnych dzielników
-
b = a-1
jest wielokrotnoscia kazdej liczby pierwszej p, ktora jest dzielnikiem liczby m
- b jest wielokrotnością 4 jesli m tez jest wielokrotnością 4.
Dla uproszczenia należy przyjąć c = 0, otrzymując w ten sposób multiplikatywny liniowy generator kongruentny (MLCG).
- Wartości a oraz m powinny być łatwe do modyfikacji w programie.
Efektem działania makra powinny być trzy pliki: losowe1.dat, losowe2.dat, losowe3.dat, zawierające ciąg wygenerowanych liczb dla parametrów odpowiednio:
- m=7 i a=3,
- m=97 i a=23,
- m=32363 i a=157.
Część druga: test widmowy
Należy przeprowadzić test widmowy aby przetestować jakość generatora. By to zrobić należy narysować na płaszczyźnie punkty o współrzędnych (x[n], x[n+1])
. Uzyskany obraz utworzy wzór przypominający widmo generatora - stąd nazwa testu.
Jeśli punkty będą rozłożone równomiernie generator można uznać za dobry. Jeśli zdecydowanie widać pewną okresowość - punkty powtarzają się wielokrotnie - generator nie działa poprawnie. Oczywiście na rozłożenie punktów wpływa jedynie dobór parametrów a i m.
- Do tworzenia wykresów widma poleca się użycie obiektów
TH2D
Wynikiem działania programu powinny być trzy wykresy widma uzyskane na podstawie uprzednio zapisanych plików losowe1.dat, losowe2.dat, losowe3.dat.
"Część trzecia:" Generacja liczb losowych oparta na transformacji rozkładu jednorodnego