Slumpmässiga tal i datorer Johan Hjerling Institutionen för informationsbehandling
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
Slumptalsgeneratorer Mitten-kvadrerad metoden Linjärt kongruerande metoden RANROT Slumpmässiga tal i datorer, Johan Hjerling 6
Mitten-kvadrerad metoden r 1 = 8269 r 2 = 3763 ((r 1 ) 2 = ) r 3 = 1601 ((r 2 ) 2 = ) Degenerering 1, 0 2 = 0 Degenerering 2, 6100, 2100, 4100, 8100, Relativt svåra beräkningar Ej likformigt fördelad Slumpmässiga tal i datorer, Johan Hjerling 2
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, 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
14
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
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 = a = 1 c = 1134, 135, 136, 137,… X 0 = 133 3
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
Problem med L-K-M Hyperplan i k-dimensionen. Lösning: Shuffle procedure Slumpmässiga tal i datorer, Johan Hjerling 7
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. ( rotr 3 = ) 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 = 25 = rotr 3 = = 7 RANROT-B = ( rotr 3) + ( rotr 3) = = = 38 13
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
Användning av slumptal Monte Carlo-metoden Egentligen inte likformigt fördelad Slumpmässiga tal i datorer, Johan Hjerling 11 Slumptalet mod w
Användning av slumptal Las Vegas-metoden Likformigt fördelad Slumpmässiga tal i datorer, Johan Hjerling 1 Slumptalet * m / w * heltalsdivision