Eindpresentatie Modelleren C Random Seeds Sanne Ernst Jarno van Roosmalen
Inhoud Inleiding Probleem Generatoren Statistische Tests Resultaten Conclusie
Random Willekeurig Onvoorspelbaar Statistisch random Kolmogorov-Random / Algorithmisch Random (onbruikbaar) Entropie
Probleem Random getallen nodig voor simulaties, encryptie, enz. Vaak gebruik (Pseudo)Random Generator Generator heeft goede seed(s) nodig
Eisen aan Seeds Uniform verdeeld Onafhankelijkheid Onvoorspelbaar (probleem): Als je het algoritme kent en de eerste n gegenereerde seeds moet de kans om goed te voorspellen wat de volgende seed zal zijn niet groter zijn dan bij willekeurig gokken Conclusie: Niet deterministisch algoritme nodig
Methoden om Seeds te genereren Bronnen die gebruikt worden om goede random seeds te maken Statische atmosferische ruis Geluid Aantal/duur toetsaanslagen en/of muisklikken Radioactief verval van elementen Andere (onvoorspelbare) fysische verschijnselen
Methoden om Seeds te genereren Bronnen in een gewone PC waaruit we goede random seeds willen genereren Tijd die nodig is voor een bepaalde berekening Systeemtijd Tijd die het kost om bepaalde data te lezen/schrijven van de harde schijf (fysisch random proces) Temperatuur CPU Enz. Of combinaties hiervan
Generatoren Tweetal zelf bedacht Generator 1 (weg schrijven naar hard disk) Generator 2 (berekening met systeemtijd) Twee referenties Generator 3 (Systeem tijd) Generator 4 (Java built-in)
Generator 1 Gebaseerd op het meten van de tijd die het kost om een bestand van 1 MB naar de harde schijf te schrijven. Tijd in nanoseconden modulo 256 Geïmplementeerd in JAVA
Generator 2 Gebaseerd op een lange berekening. Invoer is de systeemtijd en vrije geheugen van JAVA. Gebruikt ook tijd die nodig is voor berekening Resultaat ook weer modulo 256 Geïmplementeerd in JAVA
Generator 3 Generator 4 Simpel als referentie Systeemtijd (in ns) modulo 256 Monotoon stijgende rij (uniform, sterk afhankelijk) Generator 4 Ook als referentie Seeds generatie methode van de Secure random generator van JAVA
Statistische Testen Uniformiteit: Kolmogorov-Smirnov test χ2-test Onafhankelijkheid Correlatie test Serial test
Nulhypothese We laten een generator n getallen genereren: H0: De getallen hebben een uniforme verdeling en zijn onafhankelijk van elkaar
Kolmogorov-Smirnov test Verschil van de empirische verdelingsfunctie met de hypothetische verdelingsfunctie met . H0 verwerpen als Dn>dn,1- waarbij dn,1- het 1- kwantiel is van de Kolmogorov-Smirnov verdeling.
χ2-test Hoe de getallen verdeeld zijn. Verdeelt het interval [a0,ak), waarin de getallen zitten, op in k intervallen [a0,a1), [a1,a2),..., [ak-1,ak). Nj : aantal getallen in interval [aj-1,aj) n/k : verwachte aantal getallen in elk interval H0 verwerpen als χ2> χk-1,1- waarin χk-1,1- het 1- kwantiel is van de χ2-verdeling met k-1 vrijheidsgraden.
Correlatie test Test onafhankelijkheid van 2 opeenvolgende getallen. Met en het gemiddelde. H0 verwerpen als te groot is.
Serial test Twee-dimensionale versie van de χ2-test. Verdeelt de getallen in paren We verdelen nu het vierkant in k=m2 vierkantjes op. We tellen het aantal getallen dat in een vierkant voorkomt en vergelijken dat met het aantal dat we er verwachten. Net zoals bij de χ2-test.
Generator 1 getest Resultaten Schrijven 1 MB Test K Rij1 Rij2 Rij3 KS GOED Chi2 64 128 256 Correlatie Serial 144
Generator 1 getest Resultaten Schrijven 2 MB Test K Rij1 Rij2 Rij3 KS GOED Chi2 64 128 256 FOUT Correlatie Serial 144
Generator 2 getest Test K Rij1 Rij2 Rij3 Rij4 rij5 KS GOED Chi2 64 128 256 FOUT Correlatie Serial 144
Generator 3 getest Test K Rij1 Rij2 Rij3 Rij4 rij5 KS GOED Chi2 64 128 256 Correlatie FOUT Serial 144
Generator 4 getest Test K Rij1 Rij2 Rij3 Rij4 rij5 KS GOED Chi2 64 128 256 FOUT Correlatie Serial 144
Conclusie Generator 1 is goed. (beter dan java) Generator 2 is niet goed genoeg Generator 3 is uniform & afhankelijk Generator 4 is redelijk Generator 1 is best goed bruikbaar Wel langzaam
Vragen???