Stap 3: Het genereren van willekeurige getallen
Het blijkt dat het creëren van echte randomness zeer moeilijk is. Het kan zelfs onmogelijk zijn. Gebruik van wiskunde en programma's voor het maken van de random getal-generatoren creëert een reeks getallen die niet echt willekeurig zijn. Omdat ze wiskundige zijn en vanuit een bekende formule--ze voorspelbaar zijn. Ze zijn dus oproep pseudo-willekeurige getal-generatoren (PRNGs). Ook blijkt dat tot nu toe heeft niemand geweest kundig voor wekken een algoritme voor willekeurige getallen die wordt niet herhaald zelf. Het maakt niet uit hoe groot het programma of formule, het patroon uiteindelijk begint zich te herhalen. Het maakt niet uit hoe hard wij opzettelijk proberen te scheppen van willekeur, is er een onderliggende tendens van de volgorde waarin zelf beweert.
True random getal-generatoren (TRNGs), gebruik van elektronische of milieu lawaai voor het genereren van het nummer en op het oppervlak lijkt te zijn meer willekeurige dan Pseudorandom generatoren. Echter als we genoeg over de mechanica van de generatie van dergelijke lawaai wisten, we waarschijnlijk zou kunnen voorspellen de nummers gegenereerd. Gewoon omdat we niet slim genoeg of scherpzinnig genoeg om te voorspellen maakt iets het niet inherent onvoorspelbaar. Deze generatoren zijn ook notoir gevoelig voor hun omgeving en zal vaak halen repetitious patronen uit de omgeving eromheen (AC hum, TL frequenties, temperatuurschommelingen, etc.).
Een Pseudo willekeurig nummer programma
In het programma hieronder u kunt zien hoe ik de Picaxe microcontroller gebruikt voor het genereren van pseudo-willekeurige getallen te spelen frequenties over een twee-octaaf bereik. Afhankelijk van het aantal (b8) een opmerking is geplukt en speelde voor een korte tijd (b6) en vervolgens een van de zeven kleuren is opgepikt aan het licht voor een korte periode van tijd. Vervolgens herhaalt het proces zich.
TEKST VAN PROGRAMMA:
' Random muziek en licht generator
symbool van tijd = b3
lus:
hoge 0
hoge 1
hoge 4
' readadc 1, b12
' debug b12
willekeurige w0
willekeurige w1
tijd = 1
B9 = b1 + b3
B8 = b9/7
onderbreken van 57
' $0 C pauze, $1A, $1B
lookup b8, ($20, 21 dollar, $22, 23 dollar, $24, $25, 26 dollar, $27, 28 dollar, $29, $2A, 2B$, $00, $01, $02, $03, $04, $05, $06, $07, $08,
$09$ 0A$ 0B, $10, $11, $12, $13, 14 DOLLAR, $15, 16 DOLLAR, $17, 18 DOLLAR, $19,
$1A), b6
afstemmen van 0, time,(b6)
onderbreken van 31
opzoeken b8, ($25, 26 dollar, $27, 28 dollar, $29, $2A, $2B, $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $10, $11, $12, $13, $14, $15, 16 dollar, $17, 18 dollar, $19, $1A), b6
afstemmen van 0, time,(b6)
onderbreken 21
opzoeken b8, ($28, $29, $2A, $2B, $00, $01, $02, $03, 04$, $05, $06, $07, $08, $09, $0A, $0B, $10, $11, $12, $13, 14 dollar, $15, 16 dollar, $17), b6
afstemmen van 0, time,(b6)
onderbreken van 11
filiaal b8,(p6,p3,p1,p2,p6,p3,p2,p5,p4,p5,p7,p1,p8,p2,p1,p2,p6,p3,p2,p5,p4,p5,p7,p1)
goto lus
P1: ' willekeurige pauzes
lage 0 ' wit
laag 1
lage 4
onderbreken van 41
goto lus
P2:
laag 1 ' groen
onderbreken van 61
goto lus
P3:
lage 4
65 onderbreken ' blauw
goto lus
P4:
lage 0 ' geel
laag 1
onderbreken van 53
goto lus
P5:
laag 1 ' blauw groen
lage 4
onderbreken van 31
goto lus
P6:
lage 0 ' violet
lage 4
onderbreken van 57
P7:
lage 0 ' rood
onderbreken van 67
P8:
goto lus