Statistikk og Simulering

Økt 25. Slumptalsgeneratorar

Uniform fordeling

18.3. Uniform fordeling

Ein god slumptalsgenerator skal gje slumptal som er uavhengige og uniformt fordelte. Dersom me ser på ein heil periode frå ein lineære kongruensgenerator, er dette aldri tilfredsstilt. Generatoren kan ikkje gjenta tal innanfor perioden, so når periode går mot slutten veit me at neste tal må vera eit av dei som me ikkje har sett før. Dersom me ser på ein liten del av perioden (og parametra a, c og m er velvalde), kan me derimot få ein fordeling som er tilfredsstillande nær uniform og uavhengig.

Oppgåve 18.7 Lag to nye matlabfunksjonar rng1.m med a = 219, c = 7 og m = 32749 og rng2.m med same a og c men m = 215 = 32768. Merk at den fyrste m-verdien er eit primtal.

Me skal testa dei to slumptalsgeneratorane, og vurdera om fordelinga er uniform. Dette kan me ikkje gjera når utfallsrommet er større enn utvalet. Difor kan me ikkje sjå eit slumptal x direkte for generatoren, men dersom x er uniformt fordelt, so vil ogso xmodq vera uniformt fordelt.

Oppgåve 18.8 Bruk rng1.m og generer ein vektor x med 1000 tilfeldige tal. Lag so ein ny vektor y som er x redusert elementvis modulo 16. Lag eit histogram av y. Dvs.

1x = rng25(25,s) 
2y = mod(x,16) 
3histogram(y, ’BinMethod’,’integers’)
Ser det ut som om tala er uniformt fordelte?

Oppgåve 18.9 Gjenta øvinga over for rng2.m. Er dette uniformt fordelt?

Testane over ser på dei fire minst signifikante bitsa i slumptala. Me kan òg sjå på dei fire mest signifikante sifra.

Oppgåve 18.10 Bruk rng1.m og generer ein vektor x med 1000 tilfeldige tal. Lag so ein ny vektor y som er x med dei fire mest signifikante sifra, ved å dela på 211. Lag eit histogram av y. Dvs.

1x = rng1(25,s) 
2y = x/2^11 
3histogram(y, ’BinMethod’,’integers’)
Ser det ut som om tala er uniformt fordelte?

Gjenta øvinga med rng2.m. Kva ser du?