2. Partea matematică: descrierea și justificarea testului
Procedura testului
Intrări:
ε=ε1…εn - secvența de biți testată (εi∈{0,1});
n - lungimea secvenței (NIST recomandă n≥1000);
α - nivelul de semnificație (implicit 0.01).
Ieșiri:
p - valoarea p a testului, p∈[0,1];
decizia: aleator (p≥α, nu se respinge H0) sau nealeator.
Pașii:
Conversie bipolară: xi=2εi−1.
DFT: S=DFT(X).
Module: Mk=∣S[k]∣, pentru k=0,…,n/2−1.
Prag: T=ln(20)n.
N0=0.95⋅n/2 (numărul așteptat de vârfuri sub T).
N1: câte module sunt sub T.
d=(N1−N0)/n/4⋅0.95⋅0.05.
p=erfc(∣d∣/2).
Decizie (α=0.01): dacă p<α, secvența e nealeatorie; altfel nu se
respinge. Restul capitolului justifică fiecare pas.
Ipoteza nulă și conversia bipolară
Fie ε=ε1ε2…εn secvența testată.
Ipoteza nulă H0 este că biții sunt independenți și identic distribuiți, fiecare
cu Pr(εi=0)=Pr(εi=1)=1/2.
Primul pas transformă biții în valori bipolare:
xi=2εi−1∈{−1,+1}.
Sub H0, E[xi]=0 și Var(xi)=1. Centrarea elimină
componenta medie, astfel încât spectrul reflectă structura, nu dezechilibrul global
dintre 0 și 1.
Transformata Fourier discretă
S[k]=∑j=0n−1xje−2πijk/n,k=0,1,…,n−1.
Deoarece xj sunt reale, spectrul satisface simetria hermitiană
S[n−k]=S[k], deci ∣S[n−k]∣=∣S[k]∣. Informația neredundantă se
află în primele ⌊n/2⌋+1 componente. Testul folosește primele
n/2 module, ∣S[0]∣,…,∣S[n/2−1]∣: include componenta continuă (DC,
S[0]=∑jxj) și exclude componenta Nyquist S[n/2].
Distribuția modulelor sub H0
Scriind S[k]=Ak+iBk, pentru 0<k<n/2 părțile Ak,Bk sunt sume de
variabile independente mărginite; prin teorema limită centrală sunt aproximativ
gaussiene de medie nulă, cu
Ak,Bk∼N(0,2n).
Atunci ∣S[k]∣2=Ak2+Bk2 urmează o lege exponențială de medie n
(echivalent, ∣S[k]∣ este Rayleigh):
Pr(∣S[k]∣2≤t)=1−e−t/n.
(Componenta DC face excepție: S[0]∼N(0,n) este reală, deci
∣S[0]∣2 este χ12, nu exponențială - o mică inconsistență de model.)
Pragul de 95% și statistica de test
Căutăm pragul T pentru care 95% dintre module sunt sub T:
1−e−T2/n=0.95⟹nT2=ln20,
de unde
T=ln(20)n=2.995732274n.
Aici ln este logaritmul natural; standardul NIST notează „log”, iar valoarea
folosită este cea naturală, ln20=2.9957.
Fie N1 numărul de module sub prag și N0=0.95⋅2n valoarea
așteptată (un număr de vârfuri, nu o mărime comparabilă cu T). Dacă cele n/2
evenimente ar fi independente, N1 ar fi binomial cu
varianță 2n⋅0.95⋅0.05. În realitate, constrângerea lui
Parseval introduce o corelație care reduce varianța; NIST folosește empiric
jumătate din varianța binomială:
d=4n⋅0.95⋅0.05N1−N0.
Valoarea p și decizia
Sub H0, d este presupus N(0,1), iar testul este bilateral:
Factorul 2 vine din normalizarea gaussiană: pentru Z∼N(0,1),
Pr(∣Z∣>a)=erfc(a/2), deci p este probabilitatea cozii
bilaterale pentru ∣d∣.
La nivelul α=0.01: dacă p<α, secvența este declarată
nealeatorie. Un d negativ înseamnă prea multe vârfuri peste prag
(periodicitate); un d pozitiv înseamnă prea puține (spectru anormal de neted).
Echivalent (valoare critică din tabelă): cum d este sub H0 aproximativ
N(0,1) și testul e bilateral, se respinge dacă ∣d∣>z1−α/2,
adică dacă d iese din intervalul de acceptare [−z1−α/2,z1−α/2].
Cele două reguli sunt identice: p=erfc(∣d∣/2)<α⟺∣d∣>z1−α/2. Pentru α=0.01: z0.995=2.576, deci se
acceptă dacă d∈[−2.576,2.576]; pentru α=0.05, intervalul e [−1.96,1.96].
Cum p=0.6464≥0.01, secvența nu se respinge. Echivalent, d=0.459∈[−2.576,2.576] (în afara zonei critice) - aceeași concluzie. Documentația
raportează N1=46 (deci d=−1.376, p=0.168669); și acest d cade în
[−2.576,2.576], deci verdictul rămâne „aleator”, dar p diferă mult.
Neconcordanța apare la pasul 6 - vezi controverse.