AVR Assembler Övningsexempel 4 (8 / 9 steg)
Steg 8: Slumpgeneratorer
Om du undersöka avsnittet i programmet heter "random:" ser du den metod som jag brukade få slumpmässiga siffror att sätta på tärningarna. Jag uppfann detta bara i farten och det är definitivt inte den bästa metoden att få slumptal. Problemet med att få verkligt slumptal ur en dator är en svår. Som de flesta människor gör det liknar som jag gjorde: du använder folk med programmet för att generera slumptal. Jag använde den tid det tar att driva på för att få ett "frö" för min slumpmässiga nummer eftersom det är svårt för dig att ta "exakt" samma mängd tid att trycka på knappen varje gång. Eftersom processorn svänger 16 miljoner gånger per sekund är det osannolikt kan du trycka på knappen på exakt samma TCNT0 nummer varje gång (även om det är bara mellan 0 och 249) när jag får det numret och spara den som en variabel som kallas "seed" Jag använder det för att generera två pseudo-slumpmässiga tal, en för varje tärningskast. Som ni kan se av figuren ovan att jag gjort genom att räkna hur många gånger varje annan rulle kom upp under 200 rullar, de är inte allt som slumpmässiga (till exempel en 4 och en 5 inte kommer ofta jämförelsevis--som kan ses av figuren, det kom bara upp en gång i 200 rullar), men det är inte för dåligt för ett första försök!
Övning 3: räkna ut hur slumpmässig vår tärningarna är genom att trycka en massa gånger och grafritande resultaten. Vilken procentandel av tid du får varje siffra på en given dö? Vissa kommer upp mer ofta på lång sikt? I så fall är det inte verkligen är slumpmässig. Om vegas kodade deras videobanditer med denna generator och du gjorde samma grafritande analys kunde du göra en miljon dollar. (och jag förväntar mig en bit av åtgärden för att peka ut haha)
Övning 4: göra några upptäcktsfärder och studier för att hitta en bättre slumpgenerator att genomföra i denna kod.