Metody probabilistyczne
|
|
- Piotr Bogumił Piekarski
- 7 lat temu
- Przeglądów:
Transkrypt
1 Metody probabilistyczne Generatory liczb pseudolosowych Jędrzej Potoniec
2 Agenda 1 Wprowadzenie 2 Linear Congruential Generator Odzyskiwanie parametrów 3 Multiply-with-carry 4 Xorshift 5 KISS: Keep it simple, stupid! 6 Mersenne twister Odtwarzanie stanu 7 Fortuna 8 Testowanie generatorów 9 Podsumowanie
3 9
4 Ciąg liczb losowych (X 1, X 2,...)
5 Ciąg liczb losowych (X 1, X 2,...) 1 X i mają identyczne rozkłady 2 X i są niezależne
6 Generowanie liczb o zadanym rozkładzie wejście X U(0, 1) wyjście Y z zadanego rozkładu
7 Generowanie liczb o zadanym rozkładzie wejście X U(0, 1) wyjście Y z zadanego rozkładu Y = F 1 (X )
8 Generowanie liczb o zadanym rozkładzie wejście X U(0, 1) wyjście Y z zadanego rozkładu Y = F 1 (X ) Y Exp(0,5) x = 0,1563
9 A jeżeli odwrotność F nie jest znana? 1 repeat 2 y a+b 2 3 if F (y) X then a y 4 else b y 5 until b a δ 6 return y
10 A jeżeli odwrotność F nie jest znana? Y N (0, 1) x = 0, repeat 2 y a+b 2 3 if F (y) X then a y 4 else b y 5 until b a δ 6 return y
11 A jeżeli odwrotność F nie jest znana? Y N (0, 1) x = 0,1563 a b y F (y) 10,000 10,000 0,000 0,500 1 repeat 2 y a+b 2 3 if F (y) X then a y 4 else b y 5 until b a δ 6 return y
12 A jeżeli odwrotność F nie jest znana? 1 repeat 2 y a+b 2 3 if F (y) X then a y 4 else b y 5 until b a δ 6 return y Y N (0, 1) x = 0,1563 a b y F (y) 10,000 10,000 0,000 0,500 10,000 0,000 5,000 0,000 5,000 0,000 2,500 0,006 2,500 0,000 1,250 0,106 1,250 0,000 0,625 0,266 1,250 0,625 0,938 0,174 1,250 0,938 1,094 0,137 1,094 0,938 1,016 0,155 1,016 0,938 0,977 0,164 1,016 0,977 0,996 0,160 1,016 0,996 1,006 0,157 1,016 1,006 1,011 0,156 1,011 1,006 1,008 0,157
13 A dla rozkładów dyskretnych? 1 i 1 2 s p 1 3 while s < X do 4 i i s s + p i 6 end 7 return y i
14 A dla rozkładów dyskretnych? 1 i 1 2 s p 1 3 while s < X do 4 i i s s + p i 6 end 7 return y i Y B(30, 0,3) x = 0,1563
15 A dla rozkładów dyskretnych? 1 i 1 2 s p 1 3 while s < X do 4 i i s s + p i 6 end 7 return y i Y B(30, 0,3) x = 0,1563 i = y p i s 1 0,000 0,000
16 A dla rozkładów dyskretnych? 1 i 1 2 s p 1 3 while s < X do 4 i i s s + p i 6 end 7 return y i Y B(30, 0,3) x = 0,1563 i = y p i s 1 0,000 0, ,002 0, ,007 0, ,021 0, ,046 0, ,083 0,160
17 Przypadek szczególny: skrócony rozkład równomierny wejście X U(0, n) wyjście Y U(0, m)
18 Przypadek szczególny: skrócony rozkład równomierny wejście X U(0, n) wyjście Y U(0, m) r = new Random ( 1 ) ; f o r ( i n t i =0; i < ; i ++) tab [ i ] = r. n e x t I n t ( ) % 1 1 ;
19 X i Przypadek szczególny: skrócony rozkład równomierny wejście X U(0, n) wyjście Y U(0, m) r = new Random ( 1 ) ; f o r ( i n t i =0; i < ; i ++) tab [ i ] = r. n e x t I n t ( ) % 1 1 ; mod 11, = warto ci, min=199251, max= Liczba wyst pie
20 Przypadek szczególny: skrócony rozkład równomierny r = new Random ( 1 ) ; f o r ( i n t i =0; i < ;) { tab [ i ] = r. n e x t I n t ( ) & 0 b1111 ; i f ( tab [ i ] <11) i ++; }
21 Przypadek szczególny: skrócony rozkład równomierny r = new Random ( 1 ) ; f o r ( i n t i =0; i < ;) { tab [ i ] = r. n e x t I n t ( ) & 0 b1111 ; i f ( tab [ i ] <11) i ++; } mod 16 uci te, = warto ci, min=199896, max= Liczba wyst pie X i
22 To samo z bliska Porównanie Liczba wyst pie
23 Analiza algorytmu wejście X i U(0, 2 n 1) X i niezależne wyjście (Y 1, Y 2,..., Y l ) Y j U(0, k 1) 2 n 1 < k 2 n 1
24 Analiza algorytmu wejście X i U(0, 2 n 1) X i niezależne wyjście (Y 1, Y 2,..., Y l ) Y j U(0, k 1) 2 n 1 < k 2 n 1 Ile potrzebujemy liczb na wejściu, żeby wygenerować l liczb na wyjściu?
25 Ciąg liczb losowych (X 1, X 2,...) 1 X i U(0, n) lub X i U(0, 1) 2 X i są niezależne
26 Linear Congruential Generator (LCG) X 0 =seed X n+1 =(ax n + c) mod m
27 Równomierność a =1229 c =1 m =2048 X 0 =1 n = Liczba wyst pie X i
28 Równomierność a =65538 c =2 m =5040 X 0 =1 n = Liczba wyst pie X i
29 Równomierność 1 247, 460, 93, 1658, 1971, 1624, 1145, 230, 47, 420, 85, 18, 1643, 1968, 2033, 2046, 1639, 1148, , 1478, 1406, 110, 1982, 398, 2126, 2990, 3422, 1118, 5006, 4430, 4142, 3998, 1406, 110, 1982, 398, 2126
30 Zasady doboru współczynników Twierdzenie LCG ma okres m wtedy i tylko wtedy gdy jednocześnie: m i c są względnie pierwsze, a 1 jest podzielne przez wszystkie czynniki pierwsze m, a 1 jest podzielne przez 4 jeżeli m jest podzielne przez 4.
31 Zasady doboru współczynników Twierdzenie LCG ma okres m wtedy i tylko wtedy gdy jednocześnie: m i c są względnie pierwsze, a 1 jest podzielne przez wszystkie czynniki pierwsze m, a 1 jest podzielne przez 4 jeżeli m jest podzielne przez 4. a =1229 c =1 m =2048 X 0 =1 n =10240 a =65538 c =2 m =5040 X 0 =1 n = Liczba wyst pie Liczba wyst pie X i X i
32 Zajrzyjmy do kodu grepcode.com/file/repository.grepcode.com/java/root/jdk/ openjdk/8u40-b25/java/util/random.java#random.next%28int%29... p r i v a t e s t a t i c f i n a l long m u l t i p l i e r = 0x5DEECE66DL ; p r i v a t e s t a t i c f i n a l long addend = 0xBL ; p r i v a t e s t a t i c f i n a l long mask = (1 L << 48) 1 ; protected i n t next ( i n t b i t s ) { long o l d s e e d, n e x t s e e d ; AtomicLong seed = t h i s. seed ; do { o l d s e e d = seed. get ( ) ; n e x t s e e d = ( o l d s e e d m u l t i p l i e r + addend ) & mask ; } while (! seed. compareandset ( o l d s e e d, n e x t s e e d ) ) ; return ( i n t ) ( n e x t s e e d >>> (48 b i t s ) ) ; }
33 Niezależność w LCG Ciąg liczb losowych (X 1, X 2,...) 1 X i U(0, n) lub X i U(0, 1) 2 X i są niezależne P(X n+1 = 7 X n = 7) =...
34 Niezależność w LCG Ciąg liczb losowych (X 1, X 2,...) 1 X i U(0, n) lub X i U(0, 1) 2 X i są niezależne P(X n+1 = 7 X n = 7) =... P(X n+1 = 7 X n+2 = 7... X n+m 1 = 7 X n = 7) =...
35 Niezależność w LCG Ciąg liczb losowych (X 1, X 2,...) 1 X i U(0, n) lub X i U(0, 1) 2 X i są niezależne P(X n+1 = 7 X n = 7) =... P(X n+1 = 7 X n+2 = 7... X n+m 1 = 7 X n = 7) =... P(X n+m = 7 X n = 7) =...
36 Problem ataku na generator liczb losowych Mając dane: typ generatora (np. LCG) n kolejnych liczb z wyjścia: (x 1, x 2,..., x n ) przewidzieć kolejną wartość x n+1.
37 Odwrotność modulo odwrotność x x 1 = 1 x 1 R
38 Odwrotność modulo odwrotność x x 1 = 1 x 1 R odwrotność modulo x x 1 mod m = 1 x 1 {0, 1,..., m 1}
39 Odwrotność modulo odwrotność x x 1 = 1 x 1 R odwrotność modulo x x 1 mod m = 1 x 1 {0, 1,..., m 1} Twierdzenie x 1 istnieje wtw nwd(x, m) = 1
40 Rozszerzony algorytm Euklidesa 1 r 0 m r 1 x 2 s 0 0 s i 1 4 while r i 0 do 3 1 mod 17 =? 5 q r i 1 r i 6 r i+1 r i 1 qr i 7 s i+1 s i 1 qs i 8 i i end 10 if s i 1 < 0 then return s i 1 + m 11 else return s i 1
41 Rozszerzony algorytm Euklidesa 1 r 0 m r 1 x 2 s 0 0 s i 1 4 while r i 0 do 5 q r i 1 r i 6 r i+1 r i 1 qr i 3 1 i mod 17 =? q r i s i s i+1 s i 1 qs i 8 i i end 10 if s i 1 < 0 then return s i 1 + m 11 else return s i 1
42 Rozszerzony algorytm Euklidesa 1 r 0 m r 1 x 2 s 0 0 s i 1 4 while r i 0 do 5 q r i 1 r i 6 r i+1 r i 1 qr i 7 s i+1 s i 1 qs i 8 i i end 10 if s i 1 < 0 then return s i 1 + m 11 else return s i i mod 17 =? q r i s i
43 Rozszerzony algorytm Euklidesa 1 r 0 m r 1 x 2 s 0 0 s i 1 4 while r i 0 do 5 q r i 1 r i 6 r i+1 r i 1 qr i 7 s i+1 s i 1 qs i 8 i i end 10 if s i 1 < 0 then return s i 1 + m 11 else return s i i mod 17 =? q r i s i
44 Rozszerzony algorytm Euklidesa 1 r 0 m r 1 x 2 s 0 0 s i 1 4 while r i 0 do 5 q r i 1 r i 6 r i+1 r i 1 qr i 7 s i+1 s i 1 qs i 8 i i end 10 if s i 1 < 0 then return s i 1 + m 11 else return s i i mod 17 =? q r i s i
45 Rozszerzony algorytm Euklidesa 1 r 0 m r 1 x 2 s 0 0 s i 1 4 while r i 0 do 5 q r i 1 r i 6 r i+1 r i 1 qr i 7 s i+1 s i 1 qs i 8 i i end 10 if s i 1 < 0 then return s i 1 + m 11 else return s i i mod 17 =? q r i s i = 18 =
46 Łamanie LCG wyjście LCG 17, 15, 76, 38, 63, 70, 59, 30, 64, 80 zadanie m =?, a =?, c =?
47 Jeżeli znamy m x 2 = ax 1 + c x 3 = ax 2 + c mod m mod m x 3 x 2 = a(x 2 x 1 ) mod m [ ] (x 3 x 2 )(x 2 x 1 ) 1 a mod m
48 Odtwarzanie m x 2 =(ax 1 + c) mod m
49 Odtwarzanie m x 2 =(ax 1 + c) mod m x 3 =(ax 2 + c) mod m =...
50 Odtwarzanie m x 2 =(ax 1 + c) mod m x 3 =(ax 2 + c) mod m = (a 2 x 1 + (a + 1)c) mod m x 4 =(ax 3 + c) mod m =...
51 Odtwarzanie m x 2 =(ax 1 + c) mod m x 3 =(ax 2 + c) mod m = (a 2 x 1 + (a + 1)c) mod m x 4 =(ax 3 + c) mod m = (a 3 x 1 + (a 2 + a + 1)c) mod m x n =...
52 Odtwarzanie m x n =(a n 1 x 1 + (a n )c) mod m x n+1 x n =...
53 Odtwarzanie m x n =(a n 1 x 1 + (a n )c) mod m x n+1 x n =a n 1 (x 2 x 1 ) mod m = a n 1 δ mod m x n+2 x n =...
54 Odtwarzanie m x n =(a n 1 x 1 + (a n )c) mod m x n+1 x n =a n 1 (x 2 x 1 ) mod m = a n 1 δ mod m x n+2 x n =a n 1 (a + 1)δ mod m s =(x 4 x 2 )(x 2 x 1 ) =... t =(x 3 x 2 )(x 3 x 1 ) =...
55 Odtwarzanie m x n =(a n 1 x 1 + (a n )c) mod m x n+1 x n =a n 1 (x 2 x 1 ) mod m = a n 1 δ mod m x n+2 x n =a n 1 (a + 1)δ mod m s =(x 4 x 2 )(x 2 x 1 ) = a(a + 1)δ δ t =(x 3 x 2 )(x 3 x 1 ) = aδ(a + 1) δ s t mod m =...
56 Odtwarzanie m x n =(a n 1 x 1 + (a n )c) mod m x n+1 x n =a n 1 (x 2 x 1 ) mod m = a n 1 δ mod m x n+2 x n =a n 1 (a + 1)δ mod m s =(x 4 x 2 )(x 2 x 1 ) = a(a + 1)δ δ t =(x 3 x 2 )(x 3 x 1 ) = aδ(a + 1) δ s t mod m =... u =(x 3 x 2 ) 2 =... v =(x 4 x 3 )(x 2 x 1 ) =...
57 Odtwarzanie m x n =(a n 1 x 1 + (a n )c) mod m x n+1 x n =a n 1 (x 2 x 1 ) mod m = a n 1 δ mod m x n+2 x n =a n 1 (a + 1)δ mod m s =(x 4 x 2 )(x 2 x 1 ) = a(a + 1)δ δ t =(x 3 x 2 )(x 3 x 1 ) = aδ(a + 1) δ s t mod m =... u =(x 3 x 2 ) 2 =... v =(x 4 x 3 )(x 2 x 1 ) =... u v mod m =...
58 Odtwarzanie m s =(x 4 x 2 )(x 2 x 1 ) = a(a + 1)δ δ t =(x 3 x 2 )(x 3 x 1 ) = aδ(a + 1) δ s t mod m =... u =(x 3 x 2 ) 2 =... v =(x 4 x 3 )(x 2 x 1 ) =... u v mod m =... nwd(s t, u v) =...
59 Multiply-with-carry (X 0, C 0 ) =seed X n+1 =ax n + C n mod b axn + C n C n+1 = b
60 Multiply-with-carry (X 0, C 0 ) =seed X n+1 =ax n + C n mod b axn + C n C n+1 = b
61 Multiply-with-carry (X 0, C 0 ) =seed X n+1 =ax n + C n mod b axn + C n C n+1 = b Uwaga seed nie może być (0, 0) ani (a 1, b 1)
62 Dobór parametrów MWC Twierdzenie (o rozkładzie) Niech k {2, 3,..., ab} będzie najmniejszą liczbą taką, że b k mod (ab 1) = 1 Jeżeli k = ab 2, to MWC ma okres k (maksymalny możliwy) i ax n + C n U(1, ab 2).
63 Dobór parametrów MWC Twierdzenie (o rozkładzie) Niech k {2, 3,..., ab} będzie najmniejszą liczbą taką, że b k mod (ab 1) = 1 Jeżeli k = ab 2, to MWC ma okres k (maksymalny możliwy) i ax n + C n U(1, ab 2). Jaki rozkład ma zmienna X n, jeżeli parametry zapewniają pełen okres?
64 Implementacja // seed uint16 t c =10; uint16 t x =123; uint16 t next ( ) { uint32 t t=a x+c ; c = t >>16; x = t&0xffff ; return x ; }
65 Implementacja // seed uint16 t c =10; uint16 t x =123; uint16 t next ( ) { uint32 t t=a x+c ; c = t >>16; x = t&0xffff ; return x ; } Przykre twierdzenie Generator MWC dla którego b = 2 2u nie może mieć pełnego okresu.
66 XOR p q p q
67 XOR p q p q
68 XOR p q p q x y x y......
69 XOR p q p q x y x y
70 XOR p q p q x y x y
71 XOR p q p q x y x y x =[1, 0, 0, 1] y =[0, 1, 0, 1] x + y =[1, 1, 0, 0]
72 SHL y y<<
73 SHL y y<<
74 SHL y y<<
75 SHL y y<< y =[1, 0, 0, 1] = [y 3, y 2, y 1, y 0 ] yl =[0, 0, 1, 0] = [y 2, y 1, y 0, 0]
76 SHL y y<< y =[1, 0, 0, 1] = [y 3, y 2, y 1, y 0 ] yl =[0, 0, 1, 0] = [y 2, y 1, y 0, 0]???????? L =???????? ] [ ] [y 3 y 2 y 1 y 0 y 2 y 1 y 0 0
77 SHL y y<< y =[1, 0, 0, 1] = [y 3, y 2, y 1, y 0 ] yl =[0, 0, 1, 0] = [y 2, y 1, y 0, 0] L = ] [ ] [y 3 y 2 y 1 y 0 y 2 y 1 y 0 0
78 SHR y y>>
79 SHR y y>>
80 SHR y y>>
81 SHR y y>> y =[1, 0, 0, 1] = [y 3, y 2, y 1, y 0 ] yr =[0, 1, 0, 0] = [0, y 3, y 2, y 1 ]
82 SHR y y>> y =[1, 0, 0, 1] = [y 3, y 2, y 1, y 0 ] yr =[0, 1, 0, 0] = [0, y 3, y 2, y 1 ]???????? R =???????? ] ] [y 3 y 2 y 1 y 0 [0 y 3 y 2 y 1
83 SHR y y>> y =[1, 0, 0, 1] = [y 3, y 2, y 1, y 0 ] yr =[0, 1, 0, 0] = [0, y 3, y 2, y 1 ] R = ] ] [y 3 y 2 y 1 y 0 [0 y 3 y 2 y 1
84 Wielokrotne przesunięcia R = L =
85 Wielokrotne przesunięcia R = L = R = L T
86 Wielokrotne przesunięcia R = R = L T L = y>>n = ((y>>1)>>1)>>...>>1 = y R R... R = yr n y<<n = ((y<<1)<<1)<<...<<1 = y L L... L = yl n
87 Xorshift yˆ=y <<17;
88 Xorshift yˆ=y <<17; y=y ˆ( y <<17);
89 Xorshift yˆ=y <<17; y=y ˆ( y <<17); y = y + y L 17 = y(i + L 17 )
90 Xorshift yˆ=y <<17; y=y ˆ( y <<17); y = y + y L 17 = y(i + L 17 ) Generator Xorshift T = (I + T 1 a 1 )(I + T 2 a 2 )... (I + T l a l ) T i {L, R} a i {1,..., m 1}
91 Xorshift yˆ=y <<17; y=y ˆ( y <<17); y = y + y L 17 = y(i + L 17 ) Generator Xorshift T = (I + T 1 a 1 )(I + T 2 a 2 )... (I + T l a l ) T i {L, R} a i {1,..., m 1} X 0 =seed {0, 1} m X n+1 =X n T
92 Implementacja uint32 t x o r s h i f t ( uint32 t seed ) { seedˆ=seed <<2; seedˆ=seed >>7; seedˆ=seed <<9; return seed ; }
93 32-bitowy oraz 64-bitowy Xorshift Twierdzenie (o długości) 32-bitowy Xorshift (m = 32) oraz 64-bitowy Xorshift (m = 64) o pełnym okresie wymaga przynajmniej trzech przesunięć (l 3)
94 32-bitowy oraz 64-bitowy Xorshift Twierdzenie (o długości) 32-bitowy Xorshift (m = 32) oraz 64-bitowy Xorshift (m = 64) o pełnym okresie wymaga przynajmniej trzech przesunięć (l 3) Twierdzenie (o kierunkach) Jeżeli przesunięcia <<a, >>b, <<c zapewniają pełen okres, to dokonanie jednej lub kilku poniższych operacji nie zmieni długości okresu: odwrócenie kierunku wszystkich przesunieć zamiana a i c miejscami zamiana dwóch ostatnich przesunięć miejscami: <<a, <<c, >>b
95 32-bitowy oraz 64-bitowy Xorshift Twierdzenie (o długości) 32-bitowy Xorshift (m = 32) oraz 64-bitowy Xorshift (m = 64) o pełnym okresie wymaga przynajmniej trzech przesunięć (l 3) Twierdzenie (o kierunkach) Jeżeli przesunięcia <<a, >>b, <<c zapewniają pełen okres, to dokonanie jednej lub kilku poniższych operacji nie zmieni długości okresu: odwrócenie kierunku wszystkich przesunieć zamiana a i c miejscami zamiana dwóch ostatnich przesunięć miejscami: <<a, <<c, >>b Twierdzenie (o współczynnikach) Istnieje dokładnie 81 trójek (a, b, c) zapewniających pełen okres dla m = 32 i 275 trójek dla m = 64. G. Marsaglia Xorshift RNGs w: Journal of Statistical Software 8(14)
96 Trójki (a, b, c) dla m = 32 1, 3,10 1, 5,16 1, 5,19 1, 9,29 1,11, 6 1,11,16 1,19, 3 1,21,20 1,27,27 2, 5,15 2, 5,21 2, 7, 7 2, 7, 9 2, 7,25 2, 9,15 2,15,17 2,15,25 2,21, 9 3, 1,14 3, 3,26 3, 3,28 3, 3,29 3, 5,20 3, 5,22 3, 5,25 3, 7,29 3,13, 7 3,23,25 3,25,24 3,27,11 4, 3,17 4, 3,27 4, 5,15 5, 3,21 5, 7,22 5, 9,7 5, 9,28 5, 9,31 5,13, 6 5,15,17 5,17,13 5,21,12 5,27, 8 5,27,21 5,27,25 5,27,28 6, 1,11 6, 3,17 6,17, 9 6,21, 7 6,21,13 7, 1, 9 7, 1,18 7, 1,25 7,13,25 7,17,21 7,25,12 7,25,20 8, 7,23 8,9,23 9, 5,1 9, 5,25 9,11,19 9,21,16 10, 9,21 10, 9,25 11, 7,12 11, 7,16 11,17,13 11,21,13 12, 9,23 13, 3,17 13, 3,27 13, 5,19 13,17,15 14, 1,15 14,13,15 15, 1,29 17,15,20 17,15,23 17,15,26 G. Marsaglia Xorshift RNGs w: Journal of Statistical Software 8(14)
97 Atak na Xorshift Trywialny!
98 KISS: Keep it simple, stupid! X n+1 = (69069X n ) mod 2 32 Y n+1 =Y n (I + L 13 )(I + R 17 )(I + L 5 ) Zn + C n C n+1 = 2 32 Z n+1 = ( Z n + C n ) mod 2 32 (X n+1 + Y n+1 + Z n+1 ) mod 2 32
99 KISS: Keep it simple, stupid! X n+1 = (69069X n ) mod 2 32 Y n+1 =Y n (I + L 13 )(I + R 17 )(I + L 5 ) Zn + C n C n+1 = 2 32 Z n+1 = ( Z n + C n ) mod 2 32 (X n+1 + Y n+1 + Z n+1 ) mod 2 32 Hipoteza (G. Marsaglia) Okres generatora KISS jest dłuższy niż 2 124
100 KISS: Keep it simple, stupid! X n+1 = (69069X n ) mod 2 32 Y n+1 =Y n (I + L 13 )(I + R 17 )(I + L 5 ) Zn + C n C n+1 = 2 32 Z n+1 = ( Z n + C n ) mod 2 32 (X n+1 + Y n+1 + Z n+1 ) mod 2 32 Hipoteza (G. Marsaglia) Okres generatora KISS jest dłuższy niż Twierdzenie Generator KISS ma rozkład równomierny.
101 Implementacja KISS // seed uint32 t x = , y = ; uint32 t z = , c = ; uint32 t KISS ( ) { x =69069 x ; yˆ=y <<13; yˆ=y >>17; yˆ=y <<5; uint64 t t = ; t=t z+c ; c=t >>32; } return x+y+z ;
102 Mersenne twister Oznaczenia r { }} { I r = b k b D b = k b 0
103 Mersenne twister Oznaczenia r { }} { I r = b k b D b = k b 0 Postać ogólna [ ] [ ] 0 0 Iw r 0 X k+n =X k+m + X k+1 A + X 0 I k A r 0 0 Y k+n =X k+n T T =R u (L s D b )(L t D c )R l A, b, c, u, s, t, l, r, m to zdefiniowane stałe, w to liczba bitów
104 Mersenne twister Oznaczenia r { }} { I r = b k b D b = k b 0 Postać ogólna [ ] [ ] 0 0 Iw r 0 X k+n =X k+m + X k+1 A + X 0 I k A r 0 0 Y k+n =X k+n T T =R u (L s D b )(L t D c )R l A, b, c, u, s, t, l, r, m to zdefiniowane stałe, w to liczba bitów
105 MT19937 Wyjątkowo długi okres dla 32 bitowej wersji
106 MT19937 Wyjątkowo długi okres dla 32 bitowej wersji Bardzo popularny, domyślny dla Pythona i PHP
107 MT19937 Wyjątkowo długi okres dla 32 bitowej wersji Bardzo popularny, domyślny dla Pythona i PHP Podobny do Xorshift
108 MT19937 Wyjątkowo długi okres dla 32 bitowej wersji Bardzo popularny, domyślny dla Pythona i PHP Podobny do Xorshift Odwracalny
109 MT19937 Wyjątkowo długi okres dla 32 bitowej wersji Bardzo popularny, domyślny dla Pythona i PHP Podobny do Xorshift Odwracalny Wyjściem jest cały stan
110 MT19937 Wyjątkowo długi okres dla 32 bitowej wersji Bardzo popularny, domyślny dla Pythona i PHP Podobny do Xorshift Odwracalny Wyjściem jest cały stan Używa jednocześnie 624 liczb
111 MT19937 Wyjątkowo długi okres dla 32 bitowej wersji Bardzo popularny, domyślny dla Pythona i PHP Podobny do Xorshift Odwracalny Wyjściem jest cały stan Używa jednocześnie 624 liczb Implementacje często generują seed z jednej liczby
112 Zajrzyjmy do kodu! Twister&oldid= #Python_implementation _randommodule.c, funkcja genrand int32
113 Atak na MT y4 = y3 ^ y3 >> 18
114 Atak na MT y4 = y3 ^ y3 >> 18 y3 y 31 y y 14 y 13 y y 1 y 0
115 Atak na MT y4 = y3 ^ y3 >> 18 y3 y 31 y y 14 y 13 y y 1 y 0 y3>> y 31 y y 19 y 18
116 Atak na MT y4 = y3 ^ y3 >> 18 y3 y 31 y y 14 y 13 y y 1 y 0 y3>> y 31 y y 19 y 18 y4=y3^(y3>>18) y 31 y y 14 y 31 y 13 y 30 y y 19 y 1 y 18 y 0
117 Atak na MT y4 = y3 ^ y3 >> 18 y3 y 31 y y 14 y 13 y y 1 y 0 y3>> y 31 y y 19 y 18 y4=y3^(y3>>18) y 31 y y 14 y 31 y 13 y 30 y y 19 y 1 y 18 y 0 y4>> y 31 y y 19 y 18
118 Atak na MT y... y y y4 = y3 ^ y3 >> 18 y3 y 31 y y 14 y 13 y y 1 y 0 y3>> y 31 y y 19 y 18 y4=y3^(y3>>18) y 31 y y 14 y 31 y 13 y 30 y y 19 y 1 y 18 y 0 y4>> y 31 y y 19 y 18 y4^(y4>>18) y 31 y y 14 y 31 y 31 y y 30 y y 19 y 1 18 y 18 y 0
119 Atak na MT y... y y y4 = y3 ^ y3 >> 18 y3 y 31 y y 14 y 13 y y 1 y 0 y3>> y 31 y y 19 y 18 y4=y3^(y3>>18) y 31 y y 14 y 31 y 13 y 30 y y 19 y 1 y 18 y 0 y4>> y 31 y y 19 y 18 y4^(y4>>18) y 31 y y 14 y 31 y 31 y y 30 y y 19 y 1 18 y 18 y 0 y3=y4^(y4>>18) y 31 y y 14 y 13 y y 1 y 0
120 Atak na MT y3 = y2 ^ ((y2 << 15) & ) c = = y2 y 31 y y 16 y 15 y y 1 y 0 y2<<15 y 16 y y 1 y
121 Atak na MT y3 = y2 ^ ((y2 << 15) & ) c = = y2 y 31 y y 16 y 15 y y 1 y 0 y2<<15 y 16 y y 1 y c
122 Atak na MT y3 = y2 ^ ((y2 << 15) & ) c = = y2 y 31 y y 16 y 15 y y 1 y 0 y2<<15 y 16 y y 1 y c (y2<<15)&c y 16 y y
123 Atak na MT y3 = y2 ^ ((y2 << 15) & ) c = = y2 y 31 y y 16 y 15 y y 1 y 0 y2<<15 y 16 y y 1 y c (y2<<15)&c y 16 y y y3 y 31 y 16 y 30 y y 16 y 15 y y 1 y 0
124 Atak na MT y3 = y2 ^ ((y2 << 15) & ) c = = y2 y 31 y y 16 y 15 y y 1 y 0 y2<<15 y 16 y y 1 y c (y2<<15)&c y 16 y y y3 y 31 y 16 y 30 y y 16 y 15 y y 1 y 0 y3<<15 y 16 y y 1 y
125 Atak na MT y3 = y2 ^ ((y2 << 15) & ) c = = y2 y 31 y y 16 y 15 y y 1 y 0 y2<<15 y 16 y y 1 y c (y2<<15)&c y 16 y y y3 y 31 y 16 y 30 y y 16 y 15 y y 1 y 0 y3<<15 y 16 y y 1 y (y3<<15)&c y 16 y y
126 Atak na MT y3 = y2 ^ ((y2 << 15) & ) c = = y2 y 31 y y 16 y 15 y y 1 y 0 y2<<15 y 16 y y 1 y c (y2<<15)&c y 16 y y y3 y 31 y 16 y 30 y y 16 y 15 y y 1 y 0 y3<<15 y 16 y y 1 y (y3<<15)&c y 16 y y y3^(y3<<15)&c y 31 y y 16 y 15 y y 1 y 0
127 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0
128 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y
129 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y b
130 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y b (y1<<7)&b y y
131 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y b (y1<<7)&b y y y2 y 31 y 24 y y y 8 y 7 y 0 y 6... y 1 y 0
132 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y b (y1<<7)&b y y y2 y 31 y 24 y y y 8 y 7 y 0 y 6... y 1 y 0 z=y2&0x7f y 6... y 1 y 0
133 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y b (y1<<7)&b y y y2 y 31 y 24 y y y 8 y 7 y 0 y 6... y 1 y 0 z=y2&0x7f y 6... y 1 y 0 z<< y 6... y 1 y
134 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y b (y1<<7)&b y y y2 y 31 y 24 y y y 8 y 7 y 0 y 6... y 1 y 0 z=y2&0x7f y 6... y 1 y 0 z<< y 6... y 1 y w=(y2^((z<<7)&b)) ^(0x7F<<7) y y 8 y
135 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y b (y1<<7)&b y y y2 y 31 y 24 y y y 8 y 7 y 0 y 6... y 1 y 0 z=y2&0x7f y 6... y 1 y 0 z<< y 6... y 1 y w=(y2^((z<<7)&b)) ^(0x7F<<7) y y 8 y v=(y2^((w<<7)&b)) odzyskujemy y 20 do y 14 ^(0x7F<<14)
136 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y b (y1<<7)&b y y y2 y 31 y 24 y y y 8 y 7 y 0 y 6... y 1 y 0 z=y2&0x7f y 6... y 1 y 0 z<< y 6... y 1 y w=(y2^((z<<7)&b)) ^(0x7F<<7) y y 8 y v=(y2^((w<<7)&b)) odzyskujemy y 20 do y 14 ^(0x7F<<14) u=y2^((v<<7)&b) odzyskujemy y 27 do y 21 ^(0x7F<<21)
137 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y b (y1<<7)&b y y y2 y 31 y 24 y y y 8 y 7 y 0 y 6... y 1 y 0 z=y2&0x7f y 6... y 1 y 0 z<< y 6... y 1 y w=(y2^((z<<7)&b)) ^(0x7F<<7) y y 8 y v=(y2^((w<<7)&b)) odzyskujemy y 20 do y 14 ^(0x7F<<14) u=y2^((v<<7)&b) odzyskujemy y 27 do y 21 ^(0x7F<<21) t=y2^((u<<7)&b) odzyskujemy y 31 do y 28 ^(0x7F<<28)
138 Atak na MT y2 = y1 ^ ((y1 << 7) & ) b = = y1 y 31 y y y 8 y 7 y 6... y 1 y 0 y1<<7 y 24 y y 6... y 1 y b (y1<<7)&b y y y2 y 31 y 24 y y y 8 y 7 y 0 y 6... y 1 y 0 z=y2&0x7f y 6... y 1 y 0 z<< y 6... y 1 y w=(y2^((z<<7)&b)) ^(0x7F<<7) y y 8 y v=(y2^((w<<7)&b)) odzyskujemy y 20 do y 14 ^(0x7F<<14) u=y2^((v<<7)&b) odzyskujemy y 27 do y 21 ^(0x7F<<21) t=y2^((u<<7)&b) odzyskujemy y 31 do y 28 ^(0x7F<<28) y1=t u v w z y 31 y y y 8 y 7 y 6... y 1 y 0
139 Atak na MT y1 = y ^ (y>>11) m = 0xFFE00000 y y 31 y y 21 y y 10 y 9... y 1 y 0
140 Atak na MT y1 = y ^ (y>>11) m = 0xFFE00000 y y 31 y y 21 y y 10 y 9... y 1 y 0 y>> y y 21 y y 12 y 11
141 Atak na MT y1 = y ^ (y>>11) m = 0xFFE00000 y y 31 y y 21 y y 10 y 9... y 1 y 0 y>> y y 21 y y 12 y 11 y1 y 31 y y 21 y 20 y y 10 y 21 y 9 y y 1 y 12 y 0 y 11
142 Atak na MT y1 = y ^ (y>>11) m = 0xFFE00000 y y 31 y y 21 y y 10 y 9... y 1 y 0 y>> y y 21 y y 12 y 11 y1 y 31 y y 21 y 20 y y 10 y 21 y 9 y y 1 y 12 y 0 y 11 x=y1&(0x7ff<<21) y 31 y y
143 Atak na MT y1 = y ^ (y>>11) m = 0xFFE00000 y y 31 y y 21 y y 10 y 9... y 1 y 0 y>> y y 21 y y 12 y 11 y1 y 31 y y 21 y 20 y y 10 y 21 y 9 y y 1 y 12 y 0 y 11 x=y1&(0x7ff<<21) y 31 y y x>> y y
144 Atak na MT y1 = y ^ (y>>11) m = 0xFFE00000 y y 31 y y 21 y y 10 y 9... y 1 y 0 y>> y y 21 y y 12 y y y... y y y1 y 31 y y 21 y 20 y y 21 9 y 20 1 y 12 0 y 11 x=y1&(0x7ff<<21) y 31 y y x>> y y w=y1^(x>>11) y 31 y y 21 y y 10 y 9 y y 1 y 12 y 0 y 11
145 Atak na MT y1 = y ^ (y>>11) m = 0xFFE00000 y y 31 y y 21 y y 10 y 9... y 1 y 0 y>> y y 21 y y 12 y 11 y1 y 31 y y 21 y 20 y y 10 y 21 y 9 y y 1 y 12 y 0 y 11 x=y1&(0x7ff<<21) y 31 y y x>> y y w=y1^(x>>11) y 31 y y 21 y y 10 y 9 y 20 1 y 12 0 y 11 v=(w>>11)&0x3ff y y 12 y 11
146 Atak na MT y1 = y ^ (y>>11) m = 0xFFE00000 y y 31 y y 21 y y 10 y 9... y 1 y 0 y>> y y 21 y y 12 y 11 y1 y 31 y y 21 y 20 y y 10 y 21 y 9 y y 1 y 12 y 0 y 11 x=y1&(0x7ff<<21) y 31 y y x>> y y w=y1^(x>>11) y 31 y y 21 y y 10 y 9 y 20 1 y 12 0 y 11 v=(w>>11)&0x3ff y y 12 y 11 y=w^v y 31 y y 21 y y 10 y 9... y 1 y 0
147 Atak na MT y1 = y ^ (y>>11) m = 0xFFE00000 y y 31 y y 21 y y 10 y 9... y 1 y 0 y>> y y 21 y y 12 y 11 y1 y 31 y y 21 y 20 y y 10 y 21 y 9 y y 1 y 12 y 0 y 11 x=y1&(0x7ff<<21) y 31 y y x>> y y w=y1^(x>>11) y 31 y y 21 y y 10 y 9 y 20 1 y 12 0 y 11 v=(w>>11)&0x3ff y y 12 y 11 y=w^v y 31 y y 21 y y 10 y 9... y 1 y 0
148 Atak na generator w Pythonie
149 Fortuna Stan C 128 bitowy licznik, monotoniczny K 256 bitowy klucz, ciąg pseudolosowy
150 Fortuna Stan C 128 bitowy licznik, monotoniczny K 256 bitowy klucz, ciąg pseudolosowy 1 Function Generate(n) assert: 0 n result [] 3 for k 1 to n 16 do 4 result result AES(K, C) 5 C C end 7 K AES(K, C) AES(K, C + 1) 8 C C return result 0 end
151 Reseedowanie Fortuny Dane RC 32-bitowy licznik, początkowo 0 P 0,..., P 31 pule entropii 1 Function Reseed() 2 RC RC s [] 4 for i 0 to 31 do 5 if 2 i dzieli RC then 6 s s SHA 256 (P i ) 7 P i 8 end 9 end 0 K SHA 256 (K s) 1 end
152 Fortuna z automatycznym reseedowaniem 1 Function FullRandom(n) 2 if w P 0 spodziewamy się dostatecznie dużo entropii i od ostatniego reseedowania upłynęło co najmniej 100 ms then 3 Reseed() 4 C C end 6 if C > 0 then return Generate(n) 7 else return błąd 8 end
153 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy
154 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych
155 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych czas pomiędzy przerwaniami sprzętowymi
156 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych czas pomiędzy przerwaniami sprzętowymi precyzyjnie mierzony czas wykonania krótkiego, deterministycznego kodu (demon haveged)
157 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych czas pomiędzy przerwaniami sprzętowymi precyzyjnie mierzony czas wykonania krótkiego, deterministycznego kodu (demon haveged) generatory sprzętowe
158 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych czas pomiędzy przerwaniami sprzętowymi precyzyjnie mierzony czas wykonania krótkiego, deterministycznego kodu (demon haveged) generatory sprzętowe szumy termiczne
159 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych czas pomiędzy przerwaniami sprzętowymi precyzyjnie mierzony czas wykonania krótkiego, deterministycznego kodu (demon haveged) generatory sprzętowe szumy termiczne szum radiowy
160 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych czas pomiędzy przerwaniami sprzętowymi precyzyjnie mierzony czas wykonania krótkiego, deterministycznego kodu (demon haveged) generatory sprzętowe szumy termiczne szum radiowy rozpad promieniotwórczy
161 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych czas pomiędzy przerwaniami sprzętowymi precyzyjnie mierzony czas wykonania krótkiego, deterministycznego kodu (demon haveged) generatory sprzętowe szumy termiczne szum radiowy rozpad promieniotwórczy instrukcja rdseed (Intel)
162 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych czas pomiędzy przerwaniami sprzętowymi precyzyjnie mierzony czas wykonania krótkiego, deterministycznego kodu (demon haveged) generatory sprzętowe szumy termiczne szum radiowy rozpad promieniotwórczy instrukcja rdseed (Intel) Lotto
163 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych czas pomiędzy przerwaniami sprzętowymi precyzyjnie mierzony czas wykonania krótkiego, deterministycznego kodu (demon haveged) generatory sprzętowe szumy termiczne szum radiowy rozpad promieniotwórczy instrukcja rdseed (Intel) Lotto w wielu krajach, np.
164 Źródła entropii czas pomiędzy naciśnięciami klawiszy na klawiaturze, ruchami myszy czas pomiędzy przybyciem pakietów sieciowych czas pomiędzy przerwaniami sprzętowymi precyzyjnie mierzony czas wykonania krótkiego, deterministycznego kodu (demon haveged) generatory sprzętowe szumy termiczne szum radiowy rozpad promieniotwórczy instrukcja rdseed (Intel) Lotto w wielu krajach, np. Ciekawostka rdrand = algorytm zbliżony do Fortuny
165 Prosty test losowości: Yahtzee?????
166 Prosty test losowości: Yahtzee?????
167 Model testu X i U(1, 6), niezależne
168 Model testu X i U(1, 6), niezależne { 1 X5i 4 = X 5i 3 = X 5i 2 = X 5i 1 = X 5i K i = 0 else
169 Model testu X i U(1, 6), niezależne { 1 X5i 4 = X 5i 3 = X 5i 2 = X 5i 1 = X 5i K i = 0 else K =K 1 + K K n?
170 Model testu X i U(1, 6), niezależne { 1 X5i 4 = X 5i 3 = X 5i 2 = X 5i 1 = X 5i K i = 0 else K =K 1 + K K n B (n, 6 ) 6 5
171 Model testu X i U(1, 6), niezależne { 1 X5i 4 = X 5i 3 = X 5i 2 = X 5i 1 = X 5i K i = 0 else K =K 1 + K K n B (n, 6 ) 6 5 B (n, 6 ) 6 5?
172 Model testu X i U(1, 6), niezależne { 1 X5i 4 = X 5i 3 = X 5i 2 = X 5i 1 = X 5i K i = 0 else K =K 1 + K K n B (n, 6 ) 6 5 B (n, 6 ) ( ) n λ 6 5 Poiss? 6 4
173 Model testu X i U(1, 6), niezależne { 1 X5i 4 = X 5i 3 = X 5i 2 = X 5i 1 = X 5i K i = 0 else K =K 1 + K K n B (n, 6 ) 6 5 B (n, 6 ) ( ) ( ) n λ n n 6 5 Poiss N , 6 4 ( ) n n K N 6 4, 6 4
174 Przeprowadzenie testu ( ) n n K N 6 4, 6 4 δ +δ n 6 4 ( n P 6 4 δ K n ) δ = 0,95 k δ =?
175 Wyniki eksperymentalne, n = δ = n 1, generator odchylenie Dilbert
176 Wyniki eksperymentalne, n = δ = n 1, generator odchylenie Dilbert LCG(1229,1,2048)
177 Wyniki eksperymentalne, n = δ = n 1, generator odchylenie Dilbert LCG(1229,1,2048) rand() modulo 938
178 Wyniki eksperymentalne, n = δ = n 1, generator odchylenie Dilbert LCG(1229,1,2048) rand() modulo 938 rand() z odrzucaniem 2383
179 Wyniki eksperymentalne, n = δ = n 1, generator odchylenie Dilbert LCG(1229,1,2048) rand() modulo 938 rand() z odrzucaniem 2383 MT
180 Wyniki eksperymentalne, n = δ = n 1, generator odchylenie Dilbert LCG(1229,1,2048) rand() modulo 938 rand() z odrzucaniem 2383 MT Xorshift(2,7,9) 327
181 Wyniki eksperymentalne, n = δ = n 1, generator odchylenie Dilbert LCG(1229,1,2048) rand() modulo 938 rand() z odrzucaniem 2383 MT Xorshift(2,7,9) 327 Xorshift(2,7, )
182 Wyniki eksperymentalne, n = δ = n 1, generator odchylenie Dilbert LCG(1229,1,2048) rand() modulo 938 rand() z odrzucaniem 2383 MT Xorshift(2,7,9) 327 Xorshift(2,7, ) Uwaga To jest nadmierne uproszczenie!
183 Zestawy testów Szklana Pułapka Szklana Pułapka 2 TestU01
184 Dobre praktyki Stosuj dobre generatory
185 Dobre praktyki Stosuj dobre generatory W zastosowaniach mission-critical, stosuj generatory kryptograficznie bezpieczne
186 Dobre praktyki Stosuj dobre generatory W zastosowaniach mission-critical, stosuj generatory kryptograficznie bezpieczne Rozgrzewaj generator
187 Dobre praktyki Stosuj dobre generatory W zastosowaniach mission-critical, stosuj generatory kryptograficznie bezpieczne Rozgrzewaj generator Wykorzystuj tylko mały fragment okresu generatora
188 Dobre praktyki Stosuj dobre generatory W zastosowaniach mission-critical, stosuj generatory kryptograficznie bezpieczne Rozgrzewaj generator Wykorzystuj tylko mały fragment okresu generatora Zapewnij dostatecznie dużą przestrzeń seedów Rzeczywisty problem z Florydy Ile jest możliwych wyborów 80 ławników z listy 200 kandydatów? Czy ta liczba mieści się w 32-bitach? A 64-bitach?
189 Dobre praktyki Stosuj dobre generatory W zastosowaniach mission-critical, stosuj generatory kryptograficznie bezpieczne Rozgrzewaj generator Wykorzystuj tylko mały fragment okresu generatora Zapewnij dostatecznie dużą przestrzeń seedów Dbaj o dobry wybór seeda Symulacja na klastrze Zlecamy 100 symulacji opartych na RNG do wykonania na klastrze, identyczne zadania. Co się stanie jeżeli użyjemy time() jako seed?
190 Dobre praktyki Stosuj dobre generatory W zastosowaniach mission-critical, stosuj generatory kryptograficznie bezpieczne Rozgrzewaj generator Wykorzystuj tylko mały fragment okresu generatora Zapewnij dostatecznie dużą przestrzeń seedów Dbaj o dobry wybór seeda W razie wątpliwości zajrzyj do E. Barker, J. Kelsey Recommendation for Random Number Generation Using Deterministic Random Bit Generators (NIST Special Publication A)
191 Bibliografia 1 The Art of Computer Programming (Vol. 2) D. Knuth, rozdział III 2 Non-Uniform Random Variate Generation L. Devroye 3 N. Ferguson, B. Schneier, T. Kohno Cryptography engineering John Wiley & Sons, 2010
Generowanie liczb o zadanym rozkładzie. ln(1 F (y) λ
Wprowadzenie Generowanie liczb o zadanym rozkładzie Generowanie liczb o zadanym rozkładzie wejście X U(0, 1) wyjście Y z zadanego rozkładu F (y) = 1 e λy y = ln(1 F (y) λ = ln(1 0,1563 0, 5 0,34 Wprowadzenie
Sieci Mobilne i Bezprzewodowe laboratorium 2 Modelowanie zdarzeń dyskretnych
Sieci Mobilne i Bezprzewodowe laboratorium 2 Modelowanie zdarzeń dyskretnych Plan laboratorium Generatory liczb pseudolosowych dla rozkładów dyskretnych: Generator liczb o rozkładzie równomiernym Generator
Podstawy symulacji komputerowej
Podstawy symulacji komputerowej Wykład 3 Generatory liczb losowych Wojciech Kordecki wojciech.kordecki@pwsz-legnica.eu Państwowa Wyższa Szkoła Zawodowa im. Witelona w Legnicy Wydział Nauk Technicznych
Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1
Ataki na RSA Andrzej Chmielowiec andrzej.chmielowiec@cmmsigma.eu Centrum Modelowania Matematycznego Sigma Ataki na RSA p. 1 Plan prezentacji Wprowadzenie Ataki algebraiczne Ataki z kanałem pobocznym Podsumowanie
Algorytmy i język C++
Wykład 6 Wskaźniki Wskaźnik nie przechowuje wartości zmiennej ale, podobnie jak tablica, wskazuje miejsce w pamięci, w którym znajduje się zmienna danego typu. W poniższym przykładzie symbol * pomiędzy
Przegląd generatorów liczb pseudolosowych i analiza ich wybranych własności
Przegląd generatorów liczb pseudolosowych i analiza ich wybranych własności Jan Karwowski Zakład Sztucznej Inteligencji i Metod Obliczeniowych Wydział Matematyki i Nauk Informacyjnych PW 19 V 2016 Jan
Generowanie ciągów bitów losowych z wykorzystaniem sygnałów pochodzących z komputera
Generowanie ciągów bitów losowych z wykorzystaniem sygnałów pochodzących z komputera Praca dyplomowa magisterska Opiekun: prof. nzw. Zbigniew Kotulski Andrzej Piasecki apiaseck@mion.elka.pw.edu.pl Plan
Planowanie eksperymentu 2 (k p) w 2 r blokach. Stanisław Jaworski, Wojciech Zieliński
Planowanie eksperymentu 2 (k p) w 2 r blokach Stanisław Jaworski, Wojciech Zieliński 1. Wstęp W praktyce często możemy spotkać się z sytuacją, kiedy nie jest możliwe wykonanie pełnego eksperymentu czynnikowego
Obliczenia inspirowane Naturą
Obliczenia inspirowane Naturą Wykład 14 - Losowość Jarosław Miszczak IITiS PAN Gliwice 09/06/2016 1 / 59 1... 2... 3... 2 / 59 1 2 3 Architektura Ivy Bridge Serwis Random.org 3 / 59 Zastosowania Gdzie
Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 8
Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 8 Spis treści 13 Szyfrowanie strumieniowe i generatory ciągów pseudolosowych 3 13.1 Synchroniczne
Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska
Dr inż. Robert Wójcik, p. 313, C-3, tel. 320-27-40 Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska E-mail: Strona internetowa: robert.wojcik@pwr.edu.pl google: Wójcik
2 Kryptografia: algorytmy symetryczne
1 Kryptografia: wstęp Wyróżniamy algorytmy: Kodowanie i kompresja Streszczenie Wieczorowe Studia Licencjackie Wykład 14, 12.06.2007 symetryczne: ten sam klucz jest stosowany do szyfrowania i deszyfrowania;
Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak
Indukcja Materiały pomocnicze do wykładu wykładowca: dr Magdalena Kacprzak Charakteryzacja zbioru liczb naturalnych Arytmetyka liczb naturalnych Jedną z najważniejszych teorii matematycznych jest arytmetyka
Algorytmy zrandomizowane
Algorytmy zrandomizowane http://zajecia.jakubw.pl/nai ALGORYTMY ZRANDOMIZOWANE Algorytmy, których działanie uzależnione jest od czynników losowych. Algorytmy typu Monte Carlo: dają (po pewnym czasie) wynik
Metody Rozmyte i Algorytmy Ewolucyjne
mgr inż. Wydział Matematyczno-Przyrodniczy Szkoła Nauk Ścisłych Uniwersytet Kardynała Stefana Wyszyńskiego Podstawowe operatory genetyczne Plan wykładu Przypomnienie 1 Przypomnienie Metody generacji liczb
3 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 3 1/8 Język C Instrukcja laboratoryjna Temat: Instrukcje warunkowe, pętle. 3 Przygotował: mgr inż. Maciej Lasota 1) Instrukcje warunkowe. Instrukcje warunkowe pozwalają zdefiniować warianty
Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne
A. Permutacja losowa Matematyka dyskretna - wykład - część 2 9. Podstawowe algorytmy kombinatoryczne Załóżmy, że mamy tablice p złożoną z n liczb (ponumerowanych od 0 do n 1). Aby wygenerować losową permutację
,,Matematyczna Ruletka Czyli jak sie robi liczby (pseudo)losowe.
Wykład habilitacyjny 1 Matematyczna Ruletka Czyli jak sie robi liczby (pseudo)losowe WIESŁAW PŁACZEK Instytut Informatyki Uniwersytetu Jagiellońskiego Plan: Wst ep Co to s liczby losowe i skad a si e bior
Identyfikacja i modelowanie struktur i procesów biologicznych
Identyfikacja i modelowanie struktur i procesów biologicznych Laboratorium 3: Generatory liczb losowych. Rozkłady statystyczne mgr inż. Urszula Smyczyńska AGH Akademia Górniczo-Hutnicza 1. Cel zajęć Celem
Technologie Informacyjne
POLITECHNIKA KRAKOWSKA - WIEiK - KATEDRA AUTOMATYKI Technologie Informacyjne www.pk.edu.pl/~zk/ti_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład: Generacja liczb losowych Problem generacji
Komputerowa analiza danych doświadczalnych
Komputerowa analiza danych doświadczalnych Wykład 4 6.03.08 dr inż. Łukasz Graczykowski lukasz.graczykowski@pw.edu.pl Semestr letni 07/08 Zamiana zmiennych Transformacje liniowe Propagacja niepewności
Zastosowania arytmetyki modularnej. Zastosowania arytmetyki modularnej
Obliczenia w systemach resztowych [Song Y. Yan] Przykład: obliczanie z = x + y = 123684 + 413456 na komputerze przyjmującym słowa o długości 100 Obliczamy kongruencje: x 33 (mod 99), y 32 (mod 99), x 8
Wybrane zagadnienia teorii liczb
Wybrane zagadnienia teorii liczb Podzielność liczb NWW, NWD, Algorytm Euklidesa Arytmetyka modularna Potęgowanie modularne Małe twierdzenie Fermata Liczby pierwsze Kryptosystem RSA Podzielność liczb Relacja
Authenticated Encryption
Authenticated Inż. Kamil Zarychta Opiekun: dr Ryszard Kossowski 1 Plan prezentacji Wprowadzenie Wymagania Opis wybranych algorytmów Porównanie mechanizmów Implementacja systemu Plany na przyszłość 2 Plan
Podstawy programowania w języku C i C++
Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,
Metody numeryczne. Wykład nr 12. Dr Piotr Fronczak
Metody numeryczne Wykład nr 1 Dr Piotr Fronczak Generowanie liczb losowych Metody Monte Carlo są oparte na probabilistyce działają dzięki generowaniu liczb losowych. W komputerach te liczby generowane
Chaotyczne generatory liczb pseudolosowych
Chaotyczne generatory liczb pseudolosowych Michał Krzemiński michalkrzeminski@wp.pl Politechnika Gdańska Wydział Fizyki Technicznej i Matematyki Stosowanej Chaotyczne generatory liczb pseudolosowych -
wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach
Marcin Stępniak Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach 1. Informacje Matematyk o nazwisku Bool wymyślił gałąź matematyki do przetwarzania wartości prawda
Komputerowa analiza danych doświadczalnych
Komputerowa analiza danych doświadczalnych Wykład 4 8.03.06 dr inż. Łukasz Graczykowski lgraczyk@if.pw.edu.pl Semestr letni 05/06 Zamiana zmiennych Transformacje liniowe Propagacja niepewności Metody Monte
Wstęp do Informatyki
Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 32 Instrukcje iteracyjne
Programowanie w C Wartości pseudolosowe i pomiar czasu
Programowanie w C Wartości pseudolosowe i pomiar czasu Artur Opaliński (pokój E112) e-mail: (p. wykład administracyjny) URL: (p. wykład administracyjny) Treść wykładu Generowanie wartości losowych Wartości
Wykład 14. Testowanie hipotez statystycznych - test zgodności chi-kwadrat. Generowanie liczb losowych.
Wykład 14 Testowanie hipotez statystycznych - test zgodności chi-kwadrat. Generowanie liczb losowych. Rozkład chi-kwadrat Suma kwadratów n-zmiennych losowych o rozkładzie normalnym standardowym ma rozkład
Komputerowa Analiza Danych Doświadczalnych
Komputerowa Analiza Danych Doświadczalnych Prowadząca: dr inż. Hanna Zbroszczyk e-mail: gos@if.pw.edu.pl tel: +48 22 234 58 51 konsultacje: poniedziałek: 10-11, środa: 11-12 www: http://www.if.pw.edu.pl/~gos/students/kadd
Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7
Kryptografia z elementami kryptografii kwantowej Ryszard Tanaś http://zon8.physd.amu.edu.pl/~tanas Wykład 7 Spis treści 11 Algorytm ElGamala 3 11.1 Wybór klucza.................... 3 11.2 Szyfrowanie.....................
Wstęp do programowania
Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 1 / 34 Przypomnienie Programowanie imperatywne Program
xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy
Testowanie układów kombinacyjnych Przykładowy układ Wykrywanie błędów: 1. Sklejenie z 0 2. Sklejenie z 1 Testem danego uszkodzenia nazywa się takie wzbudzenie funkcji (wektor wejściowy), które daje błędną
urządzenia: awaria układów ochronnych, spowodowanie awarii oprogramowania
Bezpieczeństwo systemów komputerowych urządzenia: awaria układów ochronnych, spowodowanie awarii oprogramowania Słabe punkty sieci komputerowych zbiory: kradzież, kopiowanie, nieupoważniony dostęp emisja
Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska
Instytut Informatyki Politechnika Poznańska Proces transmisji może w prowadzać błędy do przesyłanych wiadomości błędy pojedyncze lub grupowe Detekcja: Wymaga uznania, że niektóre wiadomości są nieważne
Generatory liczb pseudolosowych. Tomasz Kubik
Generatory liczb pseudolosowych Tomasz Kubik Definicja Generator liczb pseudolosowych (ang. Pseudo-Random Number Generator, PRNG) program, który na podstawie niewielkiej ilości informacji (ziarna, ang.
Wstęp do programowania
Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2014 1 / 38 Przypomnienie Programowanie imperatywne Program
Generowanie ciągów pseudolosowych o zadanych rozkładach przykładowy raport
Generowanie ciągów pseudolosowych o zadanych rozkładach przykładowy raport Michał Krzemiński Streszczenie Projekt dotyczy metod generowania oraz badania własności statystycznych ciągów liczb pseudolosowych.
DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0
Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje
Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }
Liczby pseudolosowe Standardowa biblioteka języka C w pliku nagłówkowym posiada zadeklarowane dwie funkcje służące do generowania liczb pseudolosowych: rand i srand. Funkcja srand() jako parametr
Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)
Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, 7.06.2005 1 Kryptografia: algorytmy asymetryczne (RSA) Niech E K (x) oznacza szyfrowanie wiadomości x kluczem K (E od encrypt, D K (x)
Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1
Operatory Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1 Przypomnienie: operatory Operator przypisania = przypisanie x = y x y Operatory arytmetyczne
Modelowanie komputerowe
Modelowanie komputerowe wykład 1- Generatory liczb losowych i ich wykorzystanie dr Marcin Ziółkowski Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie 5,12 października 2016 r.
Krytyczność, przejścia fazowe i symulacje Monte Carlo. Katarzyna Sznajd-Weron Physics of Complex System
Krytyczność, przejścia fazowe i symulacje Monte Carlo Katarzyna Sznajd-Weron Physics of Complex System Przejścia fazowe wokół nas woda faza ciekła PUNKT KRYTYCZNY Lód faza stała para faza gazowa ciągłe
FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;
Rekurencja Wykład: rekursja, funkcje rekurencyjne, wywołanie samej siebie, wyznaczanie poszczególnych liczb Fibonacciego, potęgowanie, algorytm Euklidesa REKURENCJA Rekurencja (z łac. recurrere), zwana
Generatory Liczb Losowych
Generatory Liczb Losowych Metody deterministyczne w niedeterministycznym świecie. Paweł Jamer Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska 30 kwietnia 2011 Rysunek: demotywatory.pl
Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)
Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, 19.06.2005 1 Kryptografia: algorytmy asymetryczne (RSA) Niech E K (x) oznacza szyfrowanie wiadomości x kluczem K (E od encrypt, D K (x)
wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy
i obiekty Programowanie i obiekty uzupełnienie notatek: dr Jerzy Białkowski i obiekty 1 2 3 4 i obiekty Obiektowość języka C++ Na tym wykładzie poznamy: ˆ Klasa (w języku C++ rozszerzenie struktury, typ
Wstęp do programowania
wykład 6 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Losowanie liczb całkowitych Dostępne biblioteki Najprostsze losowanie liczb całkowitych można wykonać za pomocą funkcji
Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
programowania Wykład: 5 Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania w C++ Instrukcje sterujące 2 dr Artur Bartoszewski
Wnioskowanie statystyczne i weryfikacja hipotez statystycznych
Wnioskowanie statystyczne i weryfikacja hipotez statystycznych Wnioskowanie statystyczne Wnioskowanie statystyczne obejmuje następujące czynności: Sformułowanie hipotezy zerowej i hipotezy alternatywnej.
1 Wykład 3 Generatory liczb losowych o dowolnych rozkładach.
Wykład 3 Generatory liczb losowych o dowolnych rozkładach.. Metoda odwracania Niech X oznacza zmienna losowa o dystrybuancie F. Oznaczmy F (t) = inf (x : t F (x)). Uwaga Zauważmy, że t [0, ] : F ( F (t)
Generowanie sygnałów na DSP
Zastosowania Procesorów Sygnałowych dr inż. Grzegorz Szwoch greg@multimed.org p. 732 - Katedra Systemów Multimedialnych Generowanie sygnałów na DSP Wstęp Dziś w programie: generowanie sygnałów za pomocą
GENEROWANIE ROZDAŃ: TEORIA I PRAKTYKA MICHAŁ KLICHOWICZ KRAJOWA KURSOKONFERENCJA SĘDZIÓW IT PZBS, GRUDZIEŃ 2018
GENEROWANIE ROZDAŃ: TEORIA I PRAKTYKA MICHAŁ KLICHOWICZ KRAJOWA KURSOKONFERENCJA SĘDZIÓW IT PZBS, GRUDZIEŃ 2018 JAK WYGENEROWAĆ ROZKŁAD? METODY INTUICYJNE mieszanie uporządkowanej talii (przez wielokrotną
Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.
Spis treści: Czym jest szyfrowanie Po co nam szyfrowanie Szyfrowanie symetryczne Szyfrowanie asymetryczne Szyfrowanie DES Szyfrowanie 3DES Szyfrowanie IDEA Szyfrowanie RSA Podpis cyfrowy Szyfrowanie MD5
Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.
Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Generator liczb losowych o rozkładzie Rayleigha. Generator liczb losowych o rozkładzie Rayleigha. 1. Cel ćwiczenia
ANALIZA WŁAŚCIWOŚCI STATYSTYCZNYCH SYGNAŁÓW PSEUDOLOSOWYCH GENERATORÓW ZBUDOWANYCH NA REJESTRACH PRZESUWNYCH
POZNAN UNIVE RSITY OF TE CHNOLOGY ACADE MIC JOURNALS No 73 Electrical Engineering 2013 Rafał STĘPIEŃ* Janusz WALCZAK* ANALIZA WŁAŚCIWOŚCI STATYSTYCZNYCH SYGNAŁÓW PSEUDOLOSOWYCH GENERATORÓW ZBUDOWANYCH
Pętle instrukcje powtórzeo
Pętle instrukcje powtórzeo Pętle - zbiór instrukcji, które należy wykonad wielokrotnie. Program dyktuje: - ile razy pętla ta wykona zawarty w niej blok instrukcji - jakie mają byd warunki zakooczenia jej
WHILE (wyrażenie) instrukcja;
INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while
Liczby losowe i pętla while w języku Python
Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1 Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak
Parametry systemów klucza publicznego
Parametry systemów klucza publicznego Andrzej Chmielowiec Instytut Podstawowych Problemów Techniki Polskiej Akademii Nauk 24 marca 2010 Algorytmy klucza publicznego Zastosowania algorytmów klucza publicznego
Języki i paradygmaty programowania
Języki i paradygmaty programowania Instytut Teleinformatyki ITI PK Kraków marzec 2012 Spis rzeczy 1 Operatory w C/C++ Operatory Operatory w C/C++ operator - rodzaj funkcji wbudowanej w język; różnica notacja
Wstęp do programowania
wykład 7 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Losowanie liczb całkowitych Dostępne biblioteki Najprostsze losowanie liczb całkowitych można wykonać za pomocą funkcji
Instrukcje cykliczne (pętle) WHILE...END WHILE
Instrukcje cykliczne (pętle) Pętle pozwalają na powtarzanie fragmentu kodu programu. PĘTLE LOGICZNE WHILE...END WHILE While (warunek)...... End While Pętla będzie się wykonywała dopóki warunek jest spełniony.
Podstawowe algorytmy i ich implementacje w C. Wykład 9
Wstęp do programowania 1 Podstawowe algorytmy i ich implementacje w C Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 9 Element minimalny i maksymalny zbioru Element minimalny
Optymalizacja. Symulowane wyżarzanie
dr hab. inż. Instytut Informatyki Politechnika Poznańska www.cs.put.poznan.pl/mkomosinski, Maciej Hapke Wyżarzanie wzrost temperatury gorącej kąpieli do takiej wartości, w której ciało stałe topnieje powolne
1. Symulacje komputerowe Idea symulacji Przykład. 2. Metody próbkowania Jackknife Bootstrap. 3. Łańcuchy Markova. 4. Próbkowanie Gibbsa
BIOINFORMATYKA 1. Wykład wstępny 2. Bazy danych: projektowanie i struktura 3. Równowaga Hardyego-Weinberga, wsp. rekombinacji 4. Analiza asocjacyjna 5. Analiza asocjacyjna 6. Sekwencjonowanie nowej generacji
Elementy metod numerycznych - zajęcia 9
Poniższy dokument zawiera informacje na temat zadań rozwiązanych w trakcie laboratoriów. Elementy metod numerycznych - zajęcia 9 Tematyka - Scilab 1. Labolatoria Zajęcia za 34 punktów. Proszę wysłać krótkie
WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński
WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================
Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2
Algorytmy i struktury danych Wykład 6 Tablice rozproszone cz. 2 Na poprzednim wykładzie Wiele problemów wymaga dynamicznych zbiorów danych, na których można wykonywać operacje: wstawiania (Insert) szukania
Matematyka dyskretna
Matematyka dyskretna Wykład 6: Ciała skończone i kongruencje Gniewomir Sarbicki 2 marca 2017 Relacja przystawania Definicja: Mówimy, że liczby a, b Z przystają modulo m (co oznaczamy jako a = b (mod m)),
1 Wprowadzenie do algorytmiki
Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności
Zwiększanie losowości
Zwiększanie losowości Maciej Stankiewicz Wydział Matematyki, Fizyki i Informatyki UG Krajowe Centrum Informatyki Kwantowej XIII Matematyczne Warsztaty KaeNeMów Hel, 20-22 maja 2016 Maciej Stankiewicz Zwiększanie
Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.
Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41
Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje
Prawdopodobieństwo i statystyka
Wykład XIV: Metody Monte Carlo 19 stycznia 2016 Przybliżone obliczanie całki oznaczonej Rozważmy całkowalną funkcję f : [0, 1] R. Chcemy znaleźć przybliżoną wartość liczbową całki 1 f (x) dx. 0 Jeden ze
Wykład 6. Wyszukiwanie wzorca w tekście
Wykład 6 Wyszukiwanie wzorca w tekście 1 Wyszukiwanie wzorca (przegląd) Porównywanie łańcuchów Algorytm podstawowy siłowy (naive algorithm) Jak go zrealizować? Algorytm Rabina-Karpa Inteligentne wykorzystanie
PAKIETY STATYSTYCZNE
1. Wykład wstępny PAKIETY STATYSTYCZNE 2. SAS, wprowadzenie - środowisko Windows, Linux 3. SAS, elementy analizy danych edycja danych 4. SAS, elementy analizy danych regresja liniowa, regresja nieliniowa
Wstęp do programowania
Wstęp do programowania Wykład 5 Podstawowe techniki programownia w przykładach Janusz Szwabiński Plan wykładu: Metoda babilońska wyliczania pierwiastka Liczby pierwsze i sito Eratostenesa Metoda bisekcji
WHILE (wyrażenie) instrukcja;
INSTRUKCJE ITERACYJNE WHILE, DO WHILE, FOR Instrukcje iteracyjne pozwalają powtarzać daną instrukcję programu określoną liczbę razy lub do momentu osiągnięcia określonego skutku. Pętla iteracyjna while
W 5_2 Typy języków programowania sterowników PLC (zdefiniowane w IEC-61131) - języki graficzne (LD, FBD); języki tekstowe (ST, IL).
Norma IEC-61131-3 definiuje typy języków: graficzne: schematów drabinkowych LD, schematów blokowych FBD, tekstowe: lista instrukcji IL, tekst strukturalny ST, grafów: graf funkcji sekwencyjnych SFC, graf
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Programowanie w Turbo Pascal
Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji
Podstawy programowania. Podstawy C# Przykłady algorytmów
Podstawy programowania Podstawy C# Przykłady algorytmów Proces tworzenia programu Sformułowanie problemu funkcje programu zakres i postać danych postać i dokładność wyników Wybór / opracowanie metody rozwiązania
LSB MSB dwu bajtową sumą kontrolną CRC. Ramka transmitowana jest jako pojedynczy blok danych.
Produkt: DOKUMENTACJA SERWISOWO-SZKOLENIOWA Typ: Temat: Wersja: SUPERCAL 431/ 432/ 437/ 439 PROTOKÓŁ AQT-BUS Protokól AQT-BUS.doc Data utworzenia 02-07-16 Wstęp Niniejszy opis skierowany jest wyłącznie
Generatory takie mają niestety okres, po którym sekwencja liczb powtarza się.
1 Wstęp Będziemyrozważaćgeneratorytypux n+1 =f(x n,x n 1,...,x n k )(modm). Zakładamy,żeargumentamifunkcjifsąliczbycałkowitezezbioru0,1,...,M 1. Dla ustalenia uwagi mogą to być generatory liniowe typu:
Aplikacje WWW - laboratorium
Aplikacje WWW - laboratorium JavaServer Pages Celem ćwiczenia jest zbudowanie kilku prostych stron internetowych z użyciem technologii JSP. Podczas ćwiczenia wykorzystany zostanie algorytm sortowania bąbelkowego
Wstęp do programowania
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje
Algorytmy i Struktury Danych, 2. ćwiczenia
Algorytmy i Struktury Danych, 2. ćwiczenia 2015-10-09 Spis treści 1 Szybkie potęgowanie 1 2 Liczby Fibonacciego 2 3 Dowód, że n 1 porównań jest potrzebne do znajdowania minimum 2 4 Optymalny algorytm do
Strategie ewolucyjne (ang. evolu4on strategies)
Strategie ewolucyjne (ang. evolu4on strategies) Strategia ewolucyjna (1+1) W Strategii Ewolucyjnej(1 + 1), populacja złożona z jednego osobnika generuje jednego potomka. Kolejne (jednoelementowe) populacje
Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami
Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami dr inż. Mariusz Uchroński Wrocławskie Centrum Sieciowo-Superkomputerowe Agenda Cykliczny problem przepływowy
Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.
Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle. Sub Hasla1() Dim wzor_hasla As String Dim haslo As String Dim adres
wytwarzających ciągi okresowe liczb naturalnych
Andrzej Paszkiewicz Andrzej Paszkiewicz Omówiono podstawowe zasady projektowania generatorów kongruencyjnych liczb pseudolosowych, ze szczególnym uwzględnieniem generatorów afinicznych i inwersyjnych.
Liczby losowe w informatyce Filip Piękniewski
Informatyka w edukacji 2006 Generowanie (pseudo) losowych ciągów liczb w teorii i praktyce. 84093450142545622932952550 62333649063322374221339383200520 13051542540106038262040964141444280609841341 688043663115781403736587971012513061739642941351025559816
Technologie cyfrowe semestr letni 2018/2019
Technologie cyfrowe semestr letni 2018/2019 Tomasz Kazimierczuk Wykład 7 (08.04.2019) Wikipedia Programowanie komputerów proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów