May 1, 2025, Thursday, 120

KADD laboratorium 6

From MJanik

(Difference between revisions)
Jump to: navigation, search
(Created page with "{| align="right" | __TOC__ |} == Zadanie == ''Część pierwsza:'' <b> liniowy kongruentny generator liczb losowych</b> Należy napisać generator liczb pseudolosowych oraz za...")
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

Contents

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