Metody probabilistyczne

Wielkość: px
Rozpocząć pokaz od strony:

Download "Metody probabilistyczne"

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) λ

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

Bardziej szczegółowo

Sieci Mobilne i Bezprzewodowe laboratorium 2 Modelowanie zdarzeń dyskretnych

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

Bardziej szczegółowo

Podstawy symulacji komputerowej

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

Bardziej szczegółowo

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

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

Bardziej szczegółowo

Algorytmy i język C++

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Obliczenia inspirowane Naturą

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

Bardziej szczegółowo

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 8

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

2 Kryptografia: algorytmy symetryczne

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;

Bardziej szczegółowo

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

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

Bardziej szczegółowo

Algorytmy zrandomizowane

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

Bardziej szczegółowo

Metody Rozmyte i Algorytmy Ewolucyjne

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

Bardziej szczegółowo

3 Przygotował: mgr inż. Maciej Lasota

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

Bardziej szczegółowo

Matematyka dyskretna - wykład - część Podstawowe algorytmy kombinatoryczne

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ę

Bardziej szczegółowo

,,Matematyczna Ruletka Czyli jak sie robi liczby (pseudo)losowe.

,,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

Bardziej szczegółowo

Identyfikacja i modelowanie struktur i procesów biologicznych

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

Bardziej szczegółowo

Technologie Informacyjne

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

Bardziej szczegółowo

Komputerowa analiza danych doświadczalnych

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

Bardziej szczegółowo

Zastosowania arytmetyki modularnej. Zastosowania arytmetyki modularnej

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

Bardziej szczegółowo

Wybrane zagadnienia teorii liczb

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

Bardziej szczegółowo

Authenticated Encryption

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

Bardziej szczegółowo

Podstawy programowania w języku C i C++

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,

Bardziej szczegółowo

Metody numeryczne. Wykład nr 12. Dr Piotr Fronczak

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

Bardziej szczegółowo

Chaotyczne generatory liczb pseudolosowych

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 -

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Architektura systemów komputerowych Laboratorium 13 Symulator SMS32 Operacje na bitach

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

Bardziej szczegółowo

Komputerowa analiza danych doświadczalnych

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

Bardziej szczegółowo

Wstęp do Informatyki

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

Bardziej szczegółowo

Programowanie w C Wartości pseudolosowe i pomiar czasu

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

Bardziej szczegółowo

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. 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

Bardziej szczegółowo

Komputerowa Analiza Danych Doświadczalnych

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

Bardziej szczegółowo

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

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.....................

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

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

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ą

Bardziej szczegółowo

urządzenia: awaria układów ochronnych, spowodowanie awarii oprogramowania

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

Bardziej szczegółowo

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

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

Bardziej szczegółowo

Generatory liczb pseudolosowych. Tomasz Kubik

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.

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Generowanie ciągów pseudolosowych o zadanych rozkładach przykładowy raport

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.

Bardziej szczegółowo

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

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

Bardziej szczegółowo

Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }

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

Bardziej szczegółowo

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 14, Kryptografia: algorytmy asymetryczne (RSA)

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)

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Modelowanie komputerowe

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.

Bardziej szczegółowo

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 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

Bardziej szczegółowo

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

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

Bardziej szczegółowo

Generatory Liczb Losowych

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

Bardziej szczegółowo

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 15, Kryptografia: algorytmy asymetryczne (RSA)

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)

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Wnioskowanie statystyczne i weryfikacja hipotez statystycznych

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.

Bardziej szczegółowo

1 Wykład 3 Generatory liczb losowych o dowolnych rozkładach.

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)

Bardziej szczegółowo

Generowanie sygnałów na DSP

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ą

Bardziej szczegółowo

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 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ą

Bardziej szczegółowo

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

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

Bardziej szczegółowo

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 Ć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

Bardziej szczegółowo

ANALIZA WŁAŚCIWOŚCI STATYSTYCZNYCH SYGNAŁÓW PSEUDOLOSOWYCH GENERATORÓW ZBUDOWANYCH NA REJESTRACH PRZESUWNYCH

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

Bardziej szczegółowo

Pętle instrukcje powtórzeo

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

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

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

Bardziej szczegółowo

Liczby losowe i pętla while w języku Python

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

Bardziej szczegółowo

Parametry systemów klucza publicznego

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

Bardziej szczegółowo

Języki i paradygmaty programowania

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

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Instrukcje cykliczne (pętle) WHILE...END WHILE

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.

Bardziej szczegółowo

Podstawowe algorytmy i ich implementacje w C. Wykład 9

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

Bardziej szczegółowo

Optymalizacja. Symulowane wyżarzanie

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

Bardziej szczegółowo

1. Symulacje komputerowe Idea symulacji Przykład. 2. Metody próbkowania Jackknife Bootstrap. 3. Łańcuchy Markova. 4. Próbkowanie Gibbsa

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

Bardziej szczegółowo

Elementy metod numerycznych - zajęcia 9

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

Bardziej szczegółowo

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 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 ======================================================================================================

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

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

Bardziej szczegółowo

Matematyka dyskretna

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)),

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

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

Bardziej szczegółowo

Zwiększanie losowoś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

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Prawdopodobieństwo i statystyka

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

Bardziej szczegółowo

Wykład 6. Wyszukiwanie wzorca w tekście

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

Bardziej szczegółowo

PAKIETY STATYSTYCZNE

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

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

WHILE (wyrażenie) instrukcja;

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

Bardziej szczegółowo

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).

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

Programowanie w Turbo Pascal

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

Bardziej szczegółowo

Podstawy programowania. Podstawy C# Przykłady algorytmów

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

Bardziej szczegółowo

LSB MSB dwu bajtową sumą kontrolną CRC. Ramka transmitowana jest jako pojedynczy blok danych.

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

Bardziej szczegółowo

Generatory takie mają niestety okres, po którym sekwencja liczb powtarza się.

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:

Bardziej szczegółowo

Aplikacje WWW - laboratorium

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

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Algorytmy i Struktury Danych, 2. ćwiczenia

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

Bardziej szczegółowo

Strategie ewolucyjne (ang. evolu4on strategies)

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

Bardziej szczegółowo

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 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

Bardziej szczegółowo

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. 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

Bardziej szczegółowo

wytwarzających ciągi okresowe liczb naturalnych

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.

Bardziej szczegółowo

Liczby losowe w informatyce Filip Piękniewski

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

Bardziej szczegółowo

Technologie cyfrowe semestr letni 2018/2019

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

Bardziej szczegółowo