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