Bygga en slumpmässig musik och ljus Generator och glimt bevis för Gud (3 / 4 steg)
Steg 3: Generera slumptal
Det visar sig att skapa sann slumpmässighet är mycket svårt. Kan det inte vara omöjligt. Med matematik och program för att skapa slumpgeneratorer skapar en sekvens av nummer som inte verkligen är slumpmässig. Eftersom de är matematiska och från en känd formel--är de förutsägbara. De är thus samtal pseudo-slumpmässiga nummer generatorer (PRNGs). Också visar det sig att hittills ingen har varit att skapa ett slumpmässigt nummer algoritm som inte upprepar sig. Det spelar ingen roll hur stor programmet eller formel, mönstret så småningom börjar att upprepa sig själv. Oavsett hur hårt vi avsiktligt försöker skapa slumpmässighet, finns det en underliggande tendens till ordning som profilerar sig.
Sanna slumpgeneratorer (TRNGs), använda elektronisk eller miljön buller för att generera nummer och på ytan verkar vara mer slumpmässigt än pseudo random generatorer. Men om vi visste tillräckligt om mekanismerna för generering av sådant buller, vi skulle troligen kunna förutsäga numren genereras. Bara för att vi inte är smart nog eller tillräckligt lyhörd för att förutsäga gör något det inte sin natur oförutsägbar. Sådan generatorer är också notoriskt känsliga till deras miljö och ofta hämtar upp enformiga mönster från miljön omkring dem. (AC hum, fluorescerande frekvenser, temperaturvariationer, etc.).
En Pseudo Random Number Program
I programmet nedan du kan se hur jag brukade Picaxe mikrokontroller ger pseudo-slumptal för att spela frekvenser över ett två octave. Beroende på antalet (b8) en anteckning är plockade och spelade för kort tid (b6) och därefter en av sju färger är upplockad för ljus under en kort tid. Då processen upprepas.
TEXTEN I PROGRAMMET:
' Random musik och ljus generator
symbol tid = b3
slinga:
hög 0
hög 1
hög 4
"readadc 1, b12
"debug b12
Random w0
Random w1
tid = 1
B9 = b1 + b3
B8 = b9/7
Pausa 57
"$0 C paus, $1A, $1B
lookup b8, ($20, $21, $22, $23, $24, $25, $26, 27$, $28, $29, $2A, 2B$, $00, $01, $02, $03, $04, $05, $06, $07, $08,
$09, $0A, $0B, $10, $11, $12, $13, $14, $15, 16$, $17, $18, $19,
$1A), b6
Tune 0, time,(b6)
Pausa 31
lookup b8, ($25, $26, 27$, $28, $29, $2A, $2B, $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $10, $11, $12, $13, $14, $15, 16$, $17, $18, 19$, $1A), b6
Tune 0, time,(b6)
Pausa 21
lookup b8, ($28, $29, $2A, 2B$, $00, $01, $02, $03, $04, $05, $06, $07, $08, $09, $0A, $0B, $10, $11, $12, $13, $14, $15, 16$, $17), b6
Tune 0, time,(b6)
Pausa 11
förgrena sig 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 loop
P1: "slumpmässiga pauser
låg 0 ' vit
låg 1
låg 4
Pausa 41
goto loop
P2:
låg 1 ' grön
Pausa 61
goto loop
P3:
låg 4
Pausa 65 ' blå
goto loop
P4:
låg 0 ' gul
låg 1
Pausa 53
goto loop
P5:
låg 1 ' blå grön
låg 4
Pausa 31
goto loop
P6:
låg 0 ' violet
låg 4
Pausa 57
P7:
låg 0 ' röd
Pausa 67
P8:
goto loop