Ladda ner presentationen
Presentation laddar. Vänta.
Publicerades avIsak Axelsson
1
Slumpmässiga tal i datorer Johan Hjerling Institutionen för informationsbehandling 2004 4
2
Var ligger problemet? Vad är ett slumpmässigt valt tal? Vad används slumptal till i datorer? Varför är det svårt för datorer att generera slumptal? Slumpmässiga tal i datorer, Johan Hjerling 12
3
Slumptalsgeneratorer Mitten-kvadrerad metoden Linjärt kongruerande metoden RANROT Slumpmässiga tal i datorer, Johan Hjerling 6
4
Mitten-kvadrerad metoden r 1 = 8269 r 2 = 3763 ((r 1 ) 2 = 68376361) r 3 = 1601 ((r 2 ) 2 = 14160169) Degenerering 1, 0 2 = 0 Degenerering 2, 6100, 2100, 4100, 8100, 6100.. Relativt svåra beräkningar Ej likformigt fördelad Slumpmässiga tal i datorer, Johan Hjerling 2
5
Linjärt kongruerande metoden X n+1 = (aX n + c) mod m (n ≥ 0) m (modulus): 0 < m a (multiplikand): 0 ≤ a < m c (inkrementeringsvärde):0 ≤ c < m X 0 (startvärde, frö):0 ≤ X 0 < m D.H. Lehmer, 1949. Som grund för de flesta standard slumptalsgeneratorer. Val av variabelvärden viktigt för periodens längd. Slumpmässiga tal i datorer, Johan Hjerling 9
6
14
7
Modulus (m) X n+1 = (aX n + c) mod m Bestämmer den maximala längden av perioden. För att förenkla beräkningar, gärna 2 b. Om m väljs till datorns arkitekturs fördel kan modulo-operationen lämnas bort. Slumpmässiga tal i datorer, Johan Hjerling m = 12 a = 56, 11, 0, 5, 6, 11, 0, 5, 6,... c = 5 X 0 = 5 5
8
Multiplikand (a) X n+1 = (aX n + c) mod m Väljs a = 1 får formeln formen X n = (X 0 + nc) mod m. Väljs a = 0 genereras c varje gång. a ≥ 2 och gärna 0,01m < a < 0,99m. Slumpmässiga tal i datorer, Johan Hjerling m = 2 32 = 4294967296 a = 1 c = 1134, 135, 136, 137,… X 0 = 133 3
9
Inkrementeringsvärde (c) X n+1 = (aX n + c) mod m Lämnas ofta bort men minskar då på perioden. Gärna lite gemensamt med m. ( aX n + c > m ) Slumpmässiga tal i datorer, Johan Hjerling Startvärde, frö (X 0 ) X n+1 = (aX n + c) mod m Samma frö upprepar slumptalsserien. Ofta används datorns klockan som frö. 10
10
Problem med L-K-M Hyperplan i k-dimensionen. Lösning: Shuffle procedure Slumpmässiga tal i datorer, Johan Hjerling 7
11
RANROT(-A) X n = ((X n-j + X n-k ) mod 2 b ) rotr r 1 < j < n 1 < k < n 2 b = 2-exponentiellt tal rotr 3 betyder rotera 3 steg. (001111 2 rotr 3 = 111001 2 ) Varianterna B, B3 och W roterar vid annat skede av beräkningen eller använder annat antal grundsiffror. Slumpmässiga tal i datorer, Johan Hjerling RANROT-A 12 + 13 = 25 = 11001 2 rotr 3 = 00111 2 = 7 RANROT-B 12 + 13 = (01100 2 rotr 3) + (01101 2 rotr 3) = 10001 2 + 10101 2 = 17 + 21 = 38 13
12
Testa slumptalsgeneratorer Frekvenstest – är slumptalen likformigt fördelade? Serietest – är par (tretal, fyrtal, etc.) av efter varandra följande tal likformigt fördelade? Lucktest – är luckorna eller avståndet mellan talen likformigt fördelade? Kollisionstest – om talen kategoriseras med hjälp av en hashfunktion, hur många kollisioner uppstår? Slumpmässiga tal i datorer, Johan Hjerling 8
13
Användning av slumptal Monte Carlo-metoden Egentligen inte likformigt fördelad Slumpmässiga tal i datorer, Johan Hjerling 11 Slumptalet mod w
14
Användning av slumptal Las Vegas-metoden Likformigt fördelad Slumpmässiga tal i datorer, Johan Hjerling 1 Slumptalet * m / w * heltalsdivision
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.