Stap 5: 'Echte' Randomness
Veel 'random' functies zijn in feite alles maar willekeurige: ze doorlopen een lijst met rekenkundige resultaten op basis van eerdere resultaten. Dit betekent dat als de beginwaarde hetzelfde, de tweede, derde, enzovoort is waarden ook zullen identiek. Oplossen van dit probleem de huidige tijd wordt vaak gebruikt als uitgangspunt, het is nooit hetzelfde.
Behalve u bent codering voor een microcontroller. Ze hebben niet een lopende klok. Als ze opnieuw worden ingesteld, beginnen ze van de standaardwaarden. Tuurlijk, zou u de punt van de tijd van de druk op de knop als een bron van willekeurige gegevens, maar om te doen dat timers moeten worden uitgevoerd, en dus het energieverbruik is relatief hoog.
In mijn benadering van wordt één LED gebruikt als een willekeurige gegevensbron. LED's zijn gevoelig voor licht en genereert, als breukbanden, een kleine spanning. Het grote ding is dat deze spanning extreem gevoelig voor temperatuurveranderingen, natuurlijke radioactiviteit, en andere bronnen van geluidshinder is. Deze lichte variaties kunnen worden gedetecteerd met de ADC van de Attiny, resulterend in een bijna willekeurige laatste stukje. Ik zeg 'bijna' omdat de 1 of de 0 iets voorkeur, met name gedurende korte perioden is.
Zelfs deze lichte niet-randomness is merkbaar. Dus gebruik ik alleen ' ruis ' als het zaad (start waarde) van een 'random' math-functie. Ik heb geteld afzonderlijke gebeurtenissen (zie lijst hierboven). Het resultaat is vrijwel overeenkomen met de ingestelde kans van 40% rood, groen 40% en 20% geel.
Voor nog meer willekeur kunnen de waarde van de functie van de wiskunde en de nieuwe willekeurige ruiswaarden worden samengevoegd. Ik weet niet hoe dit goed doet, maar als je dat doet, laat alstublieft een suggestie in de commentaren.