/* Podprogram: Generowanie liczby pseudolosowej --------------*/ ; Argumenty: ; [RANDOM+1] = 0 Ziarno (pseudorandom seed) ; ustawione przed pierwszym wywołaniem ; zawiera wynik ostatniego wywołania ; i potem nie wymaga ustawiania ; Wywołanie: ; SKS RANDOM ; Wyniki: ; [RANDOM+1] = A = liczba pseudolosowa x (nowe ziarno) ; --- w skali k38: 0 <= x < 274877906944 ; lub w skali k0: 0.0 <= x < 1.0 ; Pozostałe rejestry odtworzone /*------------------------------------------------------------*/ RANDOM STOP 0..*+2 ;ślad DEFS 0 ;x - ustawione na początku ;------ A = [RANDOM+1] ;x = Ziarno (poprz.l.losowa) [RANDOM+1] = B7 ;save M = [#RANa], M, AM=A*M ;x = (a * x + c) % m A = B7 B7 = [RANDOM+1] ;rest A = A + [#RANc] A = A & [#RANm] [RANDOM+1] = A ..RANDOM #RANa DEFS 3141592653 ;=Pi*10**9 =4x11x71399833+1 #RANc DEFS 27182818285 ;=e*10**10 =5x7x7523x103237 #RANm DEFS 274877906943 ;=2**38-1 =0c3777777777777 /*----- Koniec RANDOM ----------------------------------------*/ KONIEC ---