Zufallszahlengenerator

Angelegt Sonntag 01 Dezember 2024


Ein normalverteilter Zufallszahlengenerator mit den beiden Parametern: Mittelwert( mean ) und Standardabweichung( stdDev )
Programmiersprache: PicoMite



Hinweis: Sqr() = Wurzel-Operator in PicoMite
Hinweis: Log() = natürlicher Logarithmus in PicoMite



' True Normal Random Number Generator


Function trueNormalRandom(mean=0,stdDev=1)


Static u1,u2,nextZ1


If nextZ1 = 0 Then

' Generate two uniform random numbers between 0 and 1
getRandomNumbers(u1,u2)
' Calculate z0 and z1 using the Box-Muller transform
Local z(2)
z(0) = Sqr(-2 * Log(u1)) * Cos(2*Pi*u2)
z(1) = Sqr(-2 * Log(u1)) * Sin(2*Pi*u2)
' Store z1 for next call
nextZ1 = z(1)
trueNormalRandom = (z(0) * stdDev) + mean
Else
' Return stored z1 and clear it for the next call
result = (nextZ1 * stdDev) + mean
nextZ1 = 0
trueNormalRandom = result
End If


End Function


Sub getRandomNumbers(x,y)
' Assuming we have a function to get random numbers between 0 and 1
x = Math(rand) ' Mersenne Twister
y = Math(rand)
End Sub


' Test der Verteilung


Dim zuf!(10000)


For i = 0 To 9999
zuf!(i) = trueNormalRandom(10,5)
Print zuf!(i)
Next


Print
Print "Mittelwert=",Math(MEAN zuf!())
Print "Standardabweichung=",Math(SD zuf!())


Test:


Dies wurde programmiert und berechnet auf diesem "PC"


Raspberry Pi Pico2W (kostet € 7.-)
Die Firmware (WebMite/PicoMite) wird aufgespielt, indem man die BOOTSEL Taste drückt bevor man ihn mit einem USB Kabel verbindet. Dadurch wird der Pico zu einem USB-Stick, auf den man die Datei: WebMiteRP2350V6.00.01RC1.uf2 speichern kann. Diese befindet sich hier! Danach bootet der Pico neu und ist nun ein Basic-Computer ;-)


>option list


WebMite MMBasic RP2350A Edition V6.00.01RC1
OPTION AUTORUN 1
OPTION FLASH SIZE 4194304
OPTION COLOURCODE ON
OPTION CPUSPEED 252000 'KHz
OPTION DISPLAY 50, 100
OPTION WIFI FritzBox, *********************, PICO94711ED3E2A
OPTION TELNET CONSOLE ON
OPTION F1 files


Hinweis: Mit OPTION AUTORUN 1 wird ein Programm im Flashspeicher 1 gestartet, welches die Einwahl in mein WLAN durchführt und Uhrzeit/Datum von einem NTP Server aus dem Internet beschafft. Bein einem erfolglosen Einwahlversuch startet die CPU durch und versucht es erneut. Dies schafft eine sichere Verbindung des Pico mit dem W-LAN.
Hinweis: Um mit OPTION F1 files die Tastenbelegung der F1 Taste auf den PicoMite Befehl "files" zu legen, muss folgendes eingegeben werden: OPTION F1 "files"+CHR$(13)
Danach listet F1 die Programme im A: Laufwerk des Pico auf ;)
Hinweis: Die Taktrate des Pico kann mit OPTION CPUSPEED eingestellt werden. Dieser spezielle Pico schafft max. 252 MHz was für > 315000 BASIC Befehle pro Sekunde gut ist!