6-11 Scratch.

Der var problemer med tilfældighederne. De pseudotilfældige tal, som oplyste sammenhængen mellem serienumrene på skrabelodder og gevinsten, var ikke gode nok, så man kunne gætte systemet.
Der var også noget om fractional diffusion equations. Og så morede jeg mig over lottoekspertens bemærkning: “I love the smell of probability in the morning.”

Pseudotilfældige tal.
Jeg har skrevet om pseudotilfældige tal tidligere, og det kan jeg da anbefale, at man læser igen 🙂 Der står f.eks. noget om Mersenne Twister metoden og Blum Blum Shub, så det får I ikke her.
Man har brug for tilfældige tal i mange sammenhænge, og det er forbavsende vanskeligt at lave et system, der leverer sådanne tal. Når man tænker over det, er det måske ikke så mærkeligt: Har man lavet et system, er det jo ikke tilfældige tal, der kommer ud – de er systematiske i en eller anden forstand. Man kan lave egentlig tilfældighed ved at bruge kvantemekanik – lade tallene være en slags funktion af henfald af et radioaktivt stof som hos HotBits. Eller man kan bruge atmosfærisk støj, som de gør på random.org.. Den slags frembringere kaldes TRNG (True Random Number Generator.) Man kan få en god filosofisk diskussion ud af, om det er rigtig tilfældigt at bruge atmosfærisk støj, eller det bare er deterministisk kaos.
Men det er meget besværligt at lave mange rigtigt tilfældige tal, så hvis man skal bruge mange, og det ikke er helt så vigtigt med sikkerheden, laver man pseudotilfældige tal, som er helt systematisk frembragt, men på en måde, så det er meget svært at gætte systemet, og så alle tal har lige stor sandsynlighed for at fremkomme.

Her er et mønster frembragt af random,org TRNG (man genererer en meget lang stribe 0’er og 1’er og maler pixels hhv. sorte og hvide alt efter om de svarer til 0 eller 1:

Og her er et, der er frembragt af PHP rand() på Microsoft Windows

Begge er lavet af Bo Allen, som sammenligner frembringere af tilfældige tal. Funktionen PHP rand() giver meget bedre resultater på Linux, siger Bo Allen. Der er nok ikke nogen, der er i tvivl om, at det nederste mønster har struktur. Men det er ikke altid så nemt at gennemskue. Det er da også en fejl i kombinationene med Windows,, og der er ikke nogen, der vil påstå, at det er et godt eksempel på PRNG

I 2007 havde Danske Spil brugt en fejlagtig frembringer af pseudotilfældige tal, en PRNG, til lynlottorækker købt over nettet. Fejlen betød, at talene 1-9 havde for lav sandsynlighed for at være med på de rækker, man købte. Er det så en ulempe for spillerne? Sandsynligheden for at den række, man har købt, bliver udtrukket, er uafhængig af, hvad det er for en række, og om den er fremkommet tilfældigt eller det er familiens fødselsdage, så umiddelbart er svaret nej. Men hvad med størrelsen af gevinsten? Man deler jo gevinsten med de andre, der har spillet på den række. Hvis en række uden tallene 1-9 bliver udtrukket, er der jo flere, der har spillet på den, end hvis alle tal var jævnt repræsenteret blandt de spillede rækker, og så er gevinsten lavere. Og den er højere, hvis gevinstrækken indeholder 1-9, og den har man så mndre chance for at have som internetlynlottospiller.
Til gengæld er der mange, der spiller på fødselsdage, hvor 1-9 er overrepræsenteret (som fødselsmåneder.)
Danske Spil fik Henrik Spliid fra DTU til at dels regne på problemet og dels lave en simulation, og han konkluderede, at lynlottospillerne ikke havde haft et tab. Netop fordi der var fordele og ulemper, der opvejede hinanden.

Havde man derimod haft problemer med tilfældigheden i udtrækning af vinderne, havde det været en helt anden sag.

Kriterier for pseudotilfældighed. Hvornår er en frembringer af pseudotilfældige tal god nok? Det tyske Bundesamt für Sicherheit in der Informationstechnik, BSI, har opstillet nogle kriterier eksempelvis (her er K1 de laveste krav, og en K2 skal opfylde K1 kriterierne etc.:

K1: Der skal være en stor sandsynlighed for, at vi fr forskellige følger af tal ud af en PRNG. En følge af tal beskrives her som en vektor. Mere præcist: Sandsynligheden for, at vektorer frembragt af vores PRNG,  (r1,…,rc)(r{c+1},…,r2c),…,(r{(M-1)c+1},…,rMc) er parvis forskellige er mindst 1-e, hvor e er et lille tal. Hvis e < 2^(-16) og M^2/(c^2 e) >2^(52) er det styrken af vores PRNG høj.

K2 Tallene skal opfylde de samme statistiske kriterier som sande tilfældige tal. Mere præcist:

Frembring 20000 binære tal b1,…,b20000.

Test 1: Læg dem sammen (ikke binært, men rigtig addition). Så skal summen ligge mellem 9654 og  10346. Det vil rigtige tilfældige tal bestå med sandsynlighed 1-10^(-6)

Test 3: Man ser på hvor lange følger af 0’er, der optræder i b1,…, b20000, det kaldes “run length”. Antallet af følger med kun et  0 (altså …101…) skal ligge mellem 2267 og 2733, antallet af følge med to nuller (…1001…) blandt de 20000 skal ligge mellem 1079 og 1421 etc. som man ser på listen her: Den sidste er antallet af følger med 6 eller flere. De samme krav skal gælde for 1-tallerne.

1 2267-2733

2 1079-1421

3  502-748

4 233-402

5 90-223

6 90-233

Test 4: Der må ikke være nogen “run length” på mere end 34.

Der er andre tests, men dem kan I finde i artiklen fra BSI.

This entry was posted in Blog. Bookmark the permalink.

One Response to 6-11 Scratch.

  1. Pingback: Tilfældige tal. på numb3rs

Comments are closed.