Sunteți pe pagina 1din 14

Numere aleatoare și pseudo-aleatoare

Teste statistice pentru evaluarea aleatorismului secvențelor binare

Număr ”pur aleator” (true random number) – număr aleator care este obținut prin înregistrarea
unor caracteristici ale fenomenelor naturale, aleatoare (timpul dintre emisiile consecutive de
particule radioactive, ”zgomotul” termic al semiconductorilor, etc)

Număr pseudo-aleator (pseudo-random number) – număr ”aleator” generat printr-un algoritm.

Transformarea unei secvențe de numere întregi pozitive în secvență binară

Pentru fiecare caracter întreg ” i ”, se folosește funcția de conversie în binar:

log 2 i 
 i 
w(i ) =   2 j 
mod 2 , cu convenția w ( 0 ) = 0 ,
j =0 

unde  este notația pentru partea întreagă a unui număr real (cel mai mare întreg care nu
depășește numărul dat).

Observație: Un număr întreg pozitiv ” n ” va avea, în reprezentare binară, 1 + lg n biți. Pentru
simplitatea calculelor se folosește aproximarea lg n .

În continuare ne vom referi la secvențe binare, fără a mai specifica acest lucru.

Definiții și notații pentru secvențe

▪ Secvență (infinită): s = s0 , s1 , s2 ,.... ;


▪ Secvență de lungime n : s n = s0 , s1 ,..., sn−1 ;
▪ Secvență N -periodică: o secvență s = s0 , s1 , s2 ,.... pentru care si = si + N , pentru orice i  0 și
N  ; Se mai numește și ”ciclu” de lungime N și se notează s N ;
▪ În cadrul unei secvențe s se definesc:
• ”run” (succesiune) = subsecvență formată din simboluri identice
consecutive ;
• ”gap” = succesiune formată din 0-uri;
• ”block” = succesiune formată din ”1”.
▪ Funcția de autocorelație: măsoară gradul de similaritate dintre secvența s și o deplasare
(shift) a sa cu t poziții, pentru secvențe N -periodice. Este o funcție cu valori întregi, definită
prin:

1 N −1
C (t ) =  ( 2si − 1)  ( 2si +t − 1) , pentru 0  t  N − 1
N i =0

Dacă secvența N -periodică este random, atunci valoarea N  C ( t ) trebuie să aibă valori mici,
pentru orice 0  t  N − 1 .

1
Postulatele lui Golomb

Reprezintă unul dintre primele rezultate teoretice referitoare la condițiile necesare pe care trebuie să
le îndeplinească o secvență periodică pseudo-aleatoare pentru a ”părea” aleatoare. Aceste condiții
nu sunt, evident, și suficiente...

Pentru o secvență N-periodică (ciclu) s N a lui s , postulatele lui Golomb sunt:

1. În ciclul s N , diferența dintre numărul de simboluri ”0” și ”1” este de cel mult 1;
2. În ciclul s N , cel puțin jumătate dintre succesiuni (run) sunt de lungime 1, cel puțin un sfert
sunt de lungime 2, cel puțin o optime sunt de lungime 3, ....etc., pentru secvențele prezente.
În plus, în cadrul fiecărui tip de secvență, numărul ”gap”-urilor este (aproape) egal cu
numărul ”block”-urilor.
3. Funcția de auto-corelație are 2 valori; Mai exact, pentru un întreg k ,

n −1
N , t =0
N  C ( t ) =  ( 2si − 1)  ( 2si +t − 1) = 
i =0  k, 1  t  n −1

O secvență care îndeplinește postulatele lui Golomb se numește pn-secvență (pseudo-noise


sequence).

Exemplu: Să se verifice dacă secvența periodică s15 = 0,1,1,0,0,1,0,0,0,1,1,1,1,0,1 este o pn-secvență.

Generatoare de numere pseudo-aleatoare (pe scurt)

”Un generator de numere aleatoare nu se alege aleator”. (D. Knuth)

Reprezentare binară a unui ”obiect” – folosește o secvență (succesiune) de simboluri binare {0,1}

Random bit generator = un algoritm care generează numere aleatoare (din distribuția uniformă) sau
care furnizează o secvență binară ale cărei elemente sunt independente statistic și nebiasate.

Numerele generate algoritmic NU sunt aleatoare, ci pseudo-aleatoare (nu sunt ”true random
numbers”).

Generatoarele de numere aleatoare:

▪ Au nevoie de o valoare de start (valoare de inițiere), numită ”seed” ;


▪ Funcția de generare este injectivă și se aplică valorilor consecutive ale ”seed”-ului, rezultând
astfel o secvență pseudo-aleatoare;
▪ Secvențele generate trebuie să îndeplinească cel puțin 2 cerințe generale de securitate (să
treacă cu succes următoarele ”teste”) pentru a putea fi utilizate în diverse aplicații:

Testul timpului polinomial : niciun algoritm cu timp polinomial nu poate distinge, cu o probabilitate
mai mare de 0.5, între o secvență ”true random” și secvența, de aceeași lungime, generată de către
generator (altfel spus, pobabilitatea de a se identifica diferențe între cele 2 secvențe este mai mică
de 0.5).

Testul next-bit : dându-se primii k biți ai secvenței de ieșire, al ( k + 1) -lea bit al secvenței nu poate fi
determinat cu o probabilitate mai mare de 0.5, de către niciun algoritm cu timp polinomial.

2
Observație: Un generator de numere pseudo-aleatoare va trece testul next-bit dacă și numai dacă va
trece testul polinomial (cu alte cuvinte... este suficient să treacă doar unul dintre aceste două teste).

Alte observații:

1) folosirea aceluiaşi ”seed” asigură reluarea aceleiaşi secvenţe de numere pseudo-aleatoare;


2) două seed-uri consecutive pot produce secvenţe corelate;
3) un generator trebuie testat riguros, dar chiar şi după ce trece cu succes cele 2 teste de mai
sus, se pot găsi aplicaţii pentru care să nu fie utilizabil;
4) pentru a verifica consistenţa rezultatelor este bine să se foloseasca cel puţin două
generatoare diferite, care să se verifice reciproc.

Exemple de generatoare de numere pseudo-aleatoare:

▪ LCM (generatorul liniar congruențial);


▪ FIPS 186 (pentru cheile private ale DSA);
▪ AINSI X9.17 (bit-generator).

Teste statstice de (pseudo) aleatorism


Sunt teste cu ajutorul cărora putem decide dacă o secvență binară dată (generată) poate sau nu să
fie considerată aleatoare. Se folosesc pentru testarea calității generatoarelor de numere
pseudoaleatoare și sunt orientate la nivelul logic minimal (bit). Rezultatele acestor teste sunt de
natură probabilistă.

Considerații generale (conform NIST) pentru testarea secvențelor pseudo-aleatoare

Orice secvență binară generată (lungimea recomandată a secvenței este între 103 și 107 biți), trebuie
să respecte următoarele condiții generale de pseudo-aleatorism:

1. Uniformitatea – Apariția lui 1 (sau 0) în orice punct al secvenței generate este echiprobabilă
n
și probabilitatea este egală cu 0.5 (sau , unde n este lungimea secvenței);
2
2. Scalabilitatea – orice test de aleatorism poate fi aplicat pe orice sub-secvență extrasă
random din secvența generată (cu alte cuvinte, orice subsecvență a unei secvențe aleatoare
este la rândul ei aleatoare);
3. Consistența – generatorul de numere pseudo-aleatoare trebuie testat pentru valori diferite
ale secvenței de inițiere (seed) și rezultatele testelor aplicate pentru generări cu seed-uri
diferite trebuie să fie aceleași (acceptare sau respingere a aleatorismului, fără variații de
decizie în funcție de seed).

Testele de aleatorism folosesc niveluri de semnificație diverse, adaptate scopului pentru care se
generează secvența pseudo-aleatoare (niveluri ”clasice” pentru  : între 0.001 și 0.05 ). Pentru
utilizarea secvențelor binare în criptografie, nivelul de semnificație trebuie să fie mai mic sau egal cu
0.01 .

3
Statisticile folosite în testele de (pseudo)aleatorism fac parte din distribuțiile: normală standard,
Student, Chi-pătrat sau Bernoulli, binomială și Poisson (pentru testarea secvențelor de lungime mai
mică).

Toate testele de (pseudo)aleatorism au următoarele 2 ipoteze statistice:

Ipoteza de nul H0 : O secvență binară produsă de către generator este ”true random” (de fapt,
secvența generată nu se poate diferenția de una ”true random” la un nivel de semnificație  );

Ipoteza alternativă H A : Secvența binară produsă nu este ”true random” (în general, bilaterală).

Pentru variantele implementate ale testelor de aleatorism (conform NIST), se folosesc următoarele
elemente (notații și funcții):

▪ Șirul binar din secvență este notat (implementat) ca  = 1 ,  2 ,...,  n (fiecare  i ia valori 0 sau
1 );
▪ Conversia șirului binar din secvență : X i = 2 i − 1 (variabila aleatoare va avea valorile 1 sau -
1);
▪ Suma Sn = X1 + X 2 + ... + X n = 2 (1 +  2 + ... +  n ) − n și valoarea ei absolută Sn ;
▪ p-value este definită cu ajutorul a două funcții:
▪ cu ajutorul funcției erorilor: p − value = erfc ( z ) , unde erfc ( z ) este
complementara funcției erorilor și se calculează cu ajutorul funcției lui
Laplace  (cu valori tabelate – vezi cuantilele repartiției normale standard):

(
erfc ( z ) = 2 1 −  z 2 
  )
▪ cu ajutorul ”funcției gamma incomplete”: p − value = igamc ( a, x ) , unde
igamc ( a, x ) este ”funcția gamma incompletă”, cu 2 parametri, definită prin:
x
1
igamc ( a, x ) = 1 −   e −t t a −1dt
(a) 0

Observație: În scop didactic, în exemplificarea testelor de (pseudo)aleatorism se vor folosi secvențe


binare de lungime maximă de 100 biți ( n = 100 ).

1. Testul de frecvență (monobit)

Scopul acestui test este să determine dacă proporţia valorilor de ”zero” şi ”unu” din întregul şir
analizat este egală cu cea aşteptată de la o secvenţă aleatoare compatibilă cu ”aruncarea cu banul
corect”.

Este ”testul de referință” pentru testarea (pseudo)aleatorismului unei secvențe binare generate în
sensul că dacă o secvență ”pică” acest test, este foarte probabil să le ”pice” și pe următoarele.

▪ Varianta ”matematică”
Generic, se notează cu p probabilitatea apariției simbolului ”1” în secvența binară s n și cu q
probabilitatea apariției simbolului ”0” (evident, q = 1 − p și p + q = 1 ). Se fixează nivelul de
semnificație al testului (  ).

4
Ipoteza de nul H0 : p = 0.5 ; (valoarea 0.5 este probabilitatea teoretică)
Ipoteza alternativă H A : p  0.5 .
n1 − n0
Funcția de test (cu repartiție normală standard): f =
n
unde n1 și n0 sunt frecvențele absolute de apariție a simbolurilor ”1” și respectiv ”0” în secvența
binară analizată.
 
Regiunea de acceptare a ipotezei de nul este: f   z , z   (se folosesc cuantilele repartiției
1−
 2 2 

normale standard).
Observație: Probabilitatea empirică de apariție a simbolului ”1” este dată de frecvența relativă de
n n
apariție a simbolului: p1 = 1 (și respectiv q0 = 0 pentru simbolul ”0”) deci se folosește definiția
n n
statistică a probabilității în stabilirea ipotezei de nul și a celei alternative.

▪ Varianta ”de implementare”

Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare;

Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.

(1) Se stabilește nivelul de semnificație  și se introduce secvența binară de test  = 1 ,  2 ,...,  n


(se citește și lungimea secvenței, n );
(2) Se face conversia șirului binar din secvență: X i = 2 i − 1 , pentru i = 1, n ;
(3) Se calculează Sn = X1 + X 2 + ... + X n = 2 (1 +  2 + ... +  n ) − n ;
Sn
(4) Se calculează statistica testului: sobs = (are repartiție normală standard pentru n mare);
n
s 
(5) Se calculează p − value = erfc  obs  = 2 1 −  ( sobs ) ;
 2
(6) Se acceptă H0 la un nivel de semnificație  dacă p − value   .

2. Testul de frecvență pentru sub-secvențe (M-bit test)

Scopul acestui test este să determine dacă proporţia de ”1” în fiecare sub-secvență de M biți
(secvențe de lungime M ) din întregul şir analizat este (aproape) egală cu 0.5 , ca în cazul secvențelor
”true random”.

Observații:
1) Pentru M = 1 se obține testul de frecvență (monobit);
2) Recomandarea NIST pentru alegerea lungimii blocurilor de test este: M  0.1 n ;
3) Secvența generată se împarte în sub-secvențe de lungime M iar biții de la sfârșitul
secvenței, care nu pot intra într-o sub-secvență, nu sunt luați în considerare.

▪ Varianta ”matematică”

5
Se fixează nivelul de semnificație al testului (  ).
Se stabilește lungimea blocului de test, M , și se calculează numărul de sub-secvențe de test:
n
N B =   (    este partea întreagă a numărului respectiv iar n este lungimea secvenței);
M 
Se determină frecvența relativă de apariție a lui ”1” din fiecare sub-secvență de M-biți:
1 M
pi = s
M j =1 ( i −1) M + j
, pentru fiecare i = 1, N B ;

NB
M 1
Ipoteza de nul H0 : p
i =1
i =
2
; ( pi = este probabilitatea teoretică pentru simbolul ”1” în fiecare
2
sub-secvență de lungime M )
NB
M
Ipoteza alternativă H A :  pi  .
i =1 2
2
 1
NB
Funcția de test (cu repartiție Chi-pătrat cu 2 − 1 grade de libertate): 
M 2
calc = 4M   pi − 
i =1  2
 
Regiunea de acceptare a ipotezei de nul este:  calc
2
   2 ( 2M − 1) ,  2  ( 2M − 1)  (se folosesc
1−
 2 2 
cuantilele repartiției Chi-pătrat).

▪ Varianta ”de implementare”

Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare;

Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.

(1) Se stabilește nivelul de semnificație  și se introduce secvența binară de test  = 1 ,  2 ,...,  n


(se citește și lungimea secvenței, n ); Se stabilește lungimea blocului de test, M , și se
n
calculează numărul de sub-secvențe de test: N B =   (    este partea întreagă a
M 
numărului respectiv);
(2) Se determină proporția de ”1” din fiecare sub-secvență de M-biți:
M
1
i =
M
(
j =1
i −1) M + j
, pentru fiecare i = 1, N B ;

2
 1
NB
(3) Se calculează statistica testului:  obs
2
= 4M    i −  (are repartițieChi-pătrat);
i =1  2
 N 2 
(4) Se calculează p − value = igamc  B , obs  ;
 2 2 
(5) Se acceptă H0 la un nivel de semnificație  dacă p − value   .

3. Testul succesiunilor (Runs test)

Scopul acestui test este să determine dacă numărul de succesiuni (”gap”-uri și ”block”-uri) din
întregul şir analizat este (aproape) identică cu cea a secvențelor ”true random”. În particular, acest

6
test determină dacă trecerea de la gap-uri la block-uri (și invers) este prea rapidă sau prea lentă
(comparativ cu trecerea din secvențele ”true random”).

Înainte de efectuarea testului succesiunilor se aplică testul de frecvență (monobit). Dacă testul de
frecvență nu este trecut, NU se mai aplică testul succesiunilor (secvența testată nu este random).

▪ Varianta ”matematică”
Generic, se notează cu R numărul de succesiuni (”runs”) din secvența s n , cu n1 numărul de
simboluri ”1” și cu n2 numărul de ”0” din secvența analizată (evident, n1 + n2 = n ). Se fixează nivelul
de semnificație al testului (  ).

Pentru o secvență ”true random”, R are o distribuție normală, R  (m,  ) .

Pentru testarea unei secvențe generate, dacă n1 și n2 sunt mari (sau cel puțin n1 , n2  20 ), se
2n1n2
consideră că secvența este aleatoare dacă R are distribuție normală cu m = + 1 și
n

2 =
( m − 1)( m − 2 ) .
( n − 1)
Testul frecvenței (monobit) poate fi înlocuit, pentru simplificarea calculelor ”de mână”, cu
următoarea condiție:
n1 1 2
−  .
n 2 n
Dacă această condiție este verificată, atunci se poate considera că secvența a trecut testul frecvenței.

Ipoteza de nul H0 : R  (m,  ) ; (funcțiile de repartiție ale ”gap”urilor și ”block”-urilor nu diferă)


Ipoteza alternativă H A : R  (m,  ) .

R−m
Funcția de test (cu repartiție normală standard): zcalc =

unde m și  sunt media și respectiv abaterea standard a variabilei R .

 
Regiunea de acceptare a ipotezei de nul este: zcalc   z , z  
 2 1− 2 

Observație: Acest test necesită o corecție de continuitate aplicată statisticii zcalc :

zcalc =
( R + 0.5) − m
(această corecție se folosește dacă n  20 sau una dintre valorile n1 sau n2

sunt mai mici de 20).

▪ Varianta ”de implementare”

Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare;

Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.

(1) Se stabilește nivelul de semnificație  și se introduce secvența binară de test  = 1 ,  2 ,...,  n


(se citește și lungimea secvenței, n ); Se execută testul de frecvență (monobit) și dacă

7
secvența trece testul, se trece la pasul (2); În caz contrar, secvența nu este (pseudo)aleatoare
și nu se mai rulează testul succesiunilor.
n

 k
(2) Se calculează proporția de ”1” din secvența binară de test:  1 = ; k =1

n
(3) Se calculează statistica testului care determină numărul total de succesiuni (”gap”-uri și
”block”-uri):
n −1
0,  k =  k +1
Vn ( obs ) = 1 +  r ( k ) , unde r ( k ) =  ;
k =1 1,  k   k +1

 V ( obs ) − 2n 1 (1 −  1 ) 
(4) Se calculează p − value = erfc  n ;
 2 2n   (1 −  ) 
 1 1 
(5) Se acceptă H0 la un nivel de semnificație  dacă p − value   .

4. Testul autocorelațiilor

Scopul acestui test este de a determina posibilele corelații ale unei secvențe s n (non-ciclică) și
varianta ei shift-ată. O secvență ”true random” este independentă de o nouă secvență obținută prin
shift logic (la stânga) de lungime dată (numită distanță de autocorelație), deci pentru o secvență
generată (pseudo-random), gradul de corelație trebuie să fie mic (cât mai apropiat de 0).
Se stabilește lungimea shift-ului d (număr natural) și nivelul de semnificație (  ).
n
Lungimea shift-ului se alege astfel încât 1  d    (    este partea întreagă). Numărul biților din
2
secvența s n care diferă de biții din varianta shift-ată este:
n−d
A ( d ) =  si  si + d ,
i =1

unde  este operatorul XOR (suma celor 2 valori, modulo 2).


Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare (nu sunt corelații de tip cuvânt
shift-at (shift logic la stânga).
Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.
2 A( d ) − ( n − d )
Funcția de test (cu repartiție normală standard pentru n − d  10 ): zcalc = .
n−d
 
Regiunea de acceptare a ipotezei de nul este: zcalc   z , z  
1−
 2 2 

Observație: testul autocorelațiilor este, de fapt, un test de frecvență (monobit) aplicat șirului binar de
lungime n − d :

s1  s1+ d , s2  s2+ d , ..., sn−d  sn (unde  este suma celor 2 valori, modulo 2).

Astfel, după construirea noului șir (secvență), se poate aplica testul frecvenței.

8
▪ Varianta ”de implementare”

Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare (nu sunt corelații de tip cuvânt
shift-at (shift logic la stânga).

Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.

(1) Se stabilește nivelul de semnificație  și se introduce secvența binară de test s = s1 , s2 ,..., sn


(se citește și lungimea secvenței, n ); Se citește numărul natural d (lungimea shift-ului logic
n
la stânga), și se verifică dacă 1  d    ;
2
(2) Se determină noua secvență binară (pe care se aplică testul)  = 1 ,  2 ,...,  n−d , unde
1 = s1  s1+d ,  2 = s2  s2+d , ...,  n−d = sn−d  sn ;
(3) face conversia șirului binar din secvență: X i = 2 i − 1 , pentru i = 1, n − d ;
(4) Se calculează Sn−d = X1 + X 2 + ... + X n−d = 2 (1 +  2 + ... +  n−d ) − ( n − d ) ;
Sn−d
(5) Se calculează statistica testului: sobs = (are repartiție normală standard pentru n − d
n−d
mare);
s 
(6) Se calculează p − value = erfc  obs  = 2 1 −  ( sobs ) ;
 2
(7) Se acceptă H0 la un nivel de semnificație  dacă p − value   .

Observație: se poate efectua și ”Testul autocorelațiilor circulare” în care șirul procesat este rotit și nu
shift-at. Pentru această variantă se aplică testul frecvenței (monobit) șirului binar de lungime n :
s1  s1+ d , s2  s2 + d , ..., si  s( i + d ) mod n ,..., sn  sd (unde  este suma celor 2 valori, modulo 2).

5. Testul serial

Scopul acestui test este să determine dacă frecvența pattern-urilor de ” m ” biți suprapuși din întregul
şir analizat este (aproape) egală cu frecvența pattern-urilor de ” m ” biți (suprapuși) din secvențele
”true random”.

Secvențele ”true random” aparțin distribuției uniforme, deci apariția unui anumit pattern de ” m ” biți
este echiprobabilă. Numărul pattern-urilor de ” m ” biți este egal cu 2m .

n
Se consideră o secvență generată s , se fixează lungimea sub-secvenței pentru căutarea pattern-
urilor (” m ”) și se fixează nivelul de semnificație al testului (  ).

▪ Varianta matematică

Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare;


Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.

9
Înainte de aplicarea testului, se formează 3 secvențe de test, prin adăugarea, la sfârșitul secvenței
generate, a primilor m − 1 , m − 2 și m − 3 biți, de la începutul secvenței (se obțin astfel trei secvențe
de test de lungime n + m − 1 , n + m − 2 și respectiv n + m − 3 ).

Se determină frecvența tuturor posibilelor pattern-uri de ” m ” biți, de ” m − 1 ” biți și de ” m − 2 ” biți


pentru cele 3 secvențe de test: s n+m−1 , sn+m−2 și respectiv sn+m−3 ; Aceste frecvențe se notează cu:
n+ m−1
vi1 ...im (sunt 2m pattern-uri de m biți în secvența s );

vi1...im−1 (sunt 2m−1 pattern-uri de m − 1 biți în secvența sn+m−2 );


vi1 ...im−2 (sunt 2m−2 pattern-uri de m − 2 biți în secvența sn+m−3 ).

Se calculează funcțiile (prin convenție, 02 =  2−1 = 0 ):

 2m   2m −1   2m − 2 
 2m =  v 2
i1 ...im  − n ;  m −1 = 
2
 vi21 ...im−1  − n ;  2m − 2 =   vi21 ...im−2  − n ;
 n i1 ...im   n i1 ...im−1   n i1 ...im−2 

Funcțiile de test (cu repartiții de tip Chi-pătrat) sunt:

2m = 2m − 2m−1 (cu 2m−1 grade de libertate) și

2 2m = 2m − 22m−1 + 2m−2 (cu 2m−2 grade de libertate).


Regiunile de acceptare a ipotezei de nul sunt:
   
 2m    2 ( 2m −1 ) ,  2  ( 2m −1 )  și respectiv  2  2m    2 ( 2m − 2 ) ,  2  ( 2m − 2 ) 
1− 1−
 2 2   2 2 

▪ Varianta ”de implementare”

Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare;

Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.

(1) Se stabilește nivelul de semnificație  și se introduce secvența binară de lungime n ; Se


citește numărul natural m și se verifică dacă m  log 2 ( n )  − 2 ;
(2) Se determină noile secvențe binare (pe care se aplică testul):
 = 1 ,  2 ,...,  n+m−1 (secvența obținută prin adăugarea, la sfârșitul secvenței generate inițial,
a primilor m − 1 biți);
 = 1 ,  2 ,...,  n+m−2 (secvența obținută prin adăugarea, la sfârșitul secvenței generate inițial, a
primilor m − 2 biți);
 = 1 ,  2 ,...,  n+m−3 (secvența obținută prin adăugarea, la sfârșitul secvenței generate inițial, a
primilor m − 3 biți);
(3) Se calculează frecvența tuturor pattern-urilor de ” m ” biți (notate vi1 ...im , din secvența de test

s n+m−1 ), de ” m − 1 ” biți (notate vi1...im−1 , din secvența de test sn+m−2 ) și de ” m − 2 ” biți


(notate vi1 ...im−2 , din secvența de test sn+m−3 );

10
 2m   2m −1 
(4) Se calculează funcțiile  2m =  v 2
i1 ...im  − n ;  2m −1 =   vi21 ...im−1  − n ;
 n i1 ...im   n i1 ...im−1 
 2m − 2 
 2m − 2 =   vi21 ...im−2  − n , cu convenția 0 =  −1 = 0 );
2 2

 n i1 ...im−2 
(5) Se calculează cele două statistici ale testului: 2m = 2m − 2m−1 și
2 2m = 2m − 22m−1 + 2m−2 ;
  2m   m −3  2  m2 
(6) Se calculează p − value1 = igamc  2m − 2 ,  și p − value2 = igamc  2 , 
 2   2 
(7) Se acceptă H0 la un nivel de semnificație  dacă p − value1   și p − value2   .

6. Testul CUSUM

Random walk unidimensional = ”drumul” obținut, într-un număr finit de pași, pentru mișcarea unei
punct material, mișcare de tip ”stânga-dreapta” unei poziții inițiale (origine), cu pas fix (de obicei, se
consideră pasul de 1 unitate).

Modelarea unui random walk unidimensional presupune alternarea de ”pași” la stânga și la dreapta
originii, cu probabilitate egală (0.5). După ”n” pași (n suficient de mare), poziția punctului material va
fi în origine.

Scopul testului CUSUM de aleatorism este de a determina dacă ”drumul” (în sens de ”random walk”)
sumelor cumulative corespunzătoare secvenței binare generate este similară cu cea a unei secvențe
”true random” (adică un random walk unidimensional).

Pentru aplicarea testului CUSUM se transformă secvența binară generată s n într-o secvență
X i = 2si − 1 , pentru i = 1, n (secvența X i va fi formată din −1,1 ).

Pentru secvența X i se calculează sumele cumulative (forward sau backward).

Aceste sume cumulative sunt considerate a fi stările (pozițiile) unui ”random walk” unidimensional.

Se consideră o secvență generată s n și se fixează nivelul de semnificație al testului (  ).


▪ Varianta matematică

Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare;


Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.

Se introduce secvența binară de test s n = s1 , s2 ,..., sn (se reține și lungimea secvenței, n ); Se face
conversia șirului binar din secvență: X i = 2si − 1 , pentru i = 1, n ;

Se calculează toate sumele cumulative ”în sus” (forward) sau toate ”în jos” (backward) – cele 2
moduri de calcul al sumelor cumulative NU se folosesc simultan:

11
S1 = X1 S1 = X n
S2 = X 1 + X 2 S2 = X n + X n−1
S2 = X 1 + X 2 + X 3 S2 = X n + X n−1 + X n−2
........................ SAU ........................
Sk = X1 + X 2 + ... + X k Sk = X n + X n−1 + ... + X k
......................... .........................
Sn = X1 + X 2 + ... + X n Sn = X n + X n−1 + ... + X1

Se determină suma cu valoarea (în modul) cea mai mare și se notează această valoare cu Smax .

Smax
Funcția de test (cu repartiție normală standard) : zcalc = (arată deviația maximă de la zero);
n
Se calculează p − value =  ( zcalc ) −  ( − zcalc ) − 2  2 ( 3zcalc ) −  ( 5 zcalc ) −  ( zcalc ) , unde  este
funcția Gauss-Laplace (funcția de repartiție a normalei standard).
Se acceptă H0 la un nivel de semnificație  dacă p − value   .

▪ Varianta ”de implementare”

Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare;

Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.

(1) Se stabilește nivelul de semnificație  și se introduce secvența binară de test  = 1 ,  2 ,...,  n


(se citește și lungimea secvenței, n );
(2) Se face conversia șirului binar din secvență: X i = 2 i − 1 , pentru i = 1, n ;
(3) Se calculează sumele cumulative: Sk = Sk −1 + X k , cu S0 = 0 (pentru ”forward”) sau
respectiv Sk = Sk −1 + X n−k +1 (pentru ”backward”) și se determină Smax ;
S max
(4) Statistica testului este: z = ;
n
(5) Se calculează: p − value =  ( z ) −  ( − z ) − 2  2 ( 3z ) −  ( 5 z ) −  ( z ) ,
(6) Se acceptă H0 la un nivel de semnificație  dacă p − value   .

Observație importantă: Este recomandat ca acest test să fie dublat de efectuarea a cel puțin încă un
test de aleatorism (de obicei, se recomandă Testul Serial).

Motivul principal pentru această recomandare este acela că o secvență alternantă de tipul
0,1,0,1,0,1,0,1,0,1,…. Va trece testul CUSUM (deși este evident că NU este o secvență pseudo-
aleatoare). De fapt, toate secvențele alternante de block-uri si gap-uri de lungime ”k” (cu k mic),
vor trece testul CUSUM.

12
7. Testul ”Random walk” (Random Excursions Test)

Pentru aplicarea acestui test se consideră sumele cumulative (calculate pentru X i = 2si − 1 , pentru
i = 1, n ) ale unei secvențe binare generate ca fiind ”stările” unui ”random walk” unidimensional.

Un drum al ”random walk”-ului începe și se termină între 2 valori consecutive nule ale șirului sumelor
cumulative. Secvența generată va fi considerată (pseudo) aleatoare dacă numărul de drumuri este
similar cu numărul de drumuri dintr-o secvență ”true random”.

▪ Varianta matematică

Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare;


Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.

Se stabilește nivelul de semnificație  și se introduce secvența binară de test s n = s1 , s2 ,..., sn (se


reține lungimea secvenței, n ); Se face conversia șirului binar din secvență: X i = 2si − 1 , pentru
i = 1, n ;

Se calculează toate sumele parțiale ”în sus” (forward):

S1 = X1
S2 = X 1 + X 2
S2 = X 1 + X 2 + X 3
........................
Sk = X1 + X 2 + ... + X k
.........................
Sn = X1 + X 2 + ... + X n
Se adaugă ”0” înainte și după secvența sumelor parțiale (dacă S1  0 și / sau Sn  0 );

Se determină J (numărul de drumuri din secvența sumelor parțiale);

Stările random walk-ului sunt valorile sumelor cumulative; Se calculează, pentru fiecare drum,
frecvența stărilor, după următoarea regulă:

- Stările între -4 și 4 (fără starea 0) se numără efectiv (frecvențe absolute); Stările mai mari ca 4
se trec la starea 4 și stările mai mici ca -4 se trec la starea -4; Aceste stări le vom nota generic
cu x ;
- Se calculează vk ( x ) = frecvența vizitelor de k - ori pentru fiecare stare x , în cele J
drumuri (cu k = 0,5 );
- Pentru vk ( x ) cu k  5 , numărul de vizite se trece în v5 ( x ) ;

(v ( x ) − J ( x ))
2
5
Funcția de test (cu repartiție Chi-pătrat cu 5 grade de libertate) : 
2
( x) =  k k
,
k =0 J k ( x)
pentru fiecare stare (8 funcții de test);  k ( x ) reprezintă valorile (tabelate) teoretice, pentru un
”true random walk”:

13
Starea 0 ( x) 1 ( x )  2 ( x) 3 ( x)  4 ( x) 5 ( x)
x = 1 0,5000 0,2500 0,1250 0,0625 0,0312 0,0312
x = 2 0,7500 0,0625 0,0469 0,0352 0,0264 0,0791
x = 3 0,8333 0,0278 0,0231 0,0193 0,0161 0,0804
x = 4 0,8750 0,0156 0,0137 0,0120 0,0105 0,0733

Regiunea de acceptare a ipotezei de nul este (pentru fiecare dintre cele 8 funcții de test):
 
 2 ( x )    2 ( 5) ,  2  ( 5 )  .
1−
 2 2 

Observație: Dacă se respinge H0 pentru una (sau maxim 3) stări, atunci se generează alte secvențe
inițiale și se aplică din nou testul. Dacă se respinge H0 pentru mai mult de 4 stări, se concluzionează
că secvența nu este random.

▪ Varianta ”de implementare”

Ipoteza de nul H0 : secvența binară generată este (pseudo)aleatoare;

Ipoteza alternativă H A : secvența binară generată nu este (pseudo)aleatoare.

(1) Se stabilește nivelul de semnificație  și se introduce secvența binară de test  = 1 ,  2 ,...,  n


(se citește și lungimea secvenței, n );
(2) Se face conversia șirului binar din secvență: X i = 2 i − 1 , pentru i = 1, n ;
(3) Se calculează sumele parțiale ”forward”: Sk = Sk −1 + X k , cu S0 = 0 ;
(4) Se calculează J , numărul de ”drumuri” din secvența sumelor parțiale; pentru a continua
(
testul se verifică dacă J  max 0.005  n , 500 , pentru ) n  106 ;
(5) Se calculează vk ( x ) = frecvența vizitelor de k - ori pentru fiecare stare x (de la -4 la 4, fără
staarea 0), în cele J drumuri (cu k = 0,5 ) iar pentru vk ( x ) cu k  5 , numărul de vizite se
trece în v5 ( x ) ;

(v ( x ) − J ( x ))
2
5
(6) Se calculează cele 8 statistici de test, pe baza formulei 
2
( x) =  k k

k =0 J k ( x)
(valorile  k ( x ) se pot citi dintr-un excel sau...direct);
 5  2 ( x) 
(7) Pentru fiecare stare x se calculează p − value = igamc  ,  ;
2 2 
(8) Se acceptă H0 la un nivel de semnificație  dacă p − value   .

Observație: Dacă se respinge H0 pentru una (sau maxim 3 stări) , atunci se generează alte secvențe
inițiale și se aplică din nou testul. Dacă se respinge H0 pentru mai mult de 4 stări, se concluzionează
că secvența nu este random.

14

S-ar putea să vă placă și