Normalverteilte Zufallszahlen
Verfasst: 25.06.2008 13:14
xxx
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Code: Alles auswählen
Procedure.l GauRand(Range.l)
Range2 = Range / 2
PiHalf.f = #PI / 2
Prec = 500000
Z = Range2 + Range2 * (ASin( (Random(Prec*2) - Prec ) / Prec ) / PiHalf)
ProcedureReturn Z
EndProcedure
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen( 1024, 768, 32, "RandomDemo" )
Dim Field( 1024 )
Repeat
ExamineKeyboard()
For n=0 To 50
Z = Random(1023)
Field(Z)+1
Next
StartDrawing(ScreenOutput())
FrontColor($FF8000)
For n=0 To 1023
Line(n, 767, 0, -Field(n) )
Next
StopDrawing()
Delay(0)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen( 1024, 768, 32, "GaussDemo1" )
Dim Field( 1024 )
Prec = 500000
Range = 1024
Range2 = Range / 2
PiHalf.f = #PI / 2
Repeat
ExamineKeyboard()
For n=0 To 50
Z = Range2 + Range2 * (ASin( (Random(Prec*2) - Prec ) / Prec ) / PiHalf)
Field(Z)+1
Next
StartDrawing(ScreenOutput())
FrontColor($FF8000)
For n=0 To 1023
Line(n, 767, 0, -Field(n) )
Next
StopDrawing()
Delay(0)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen( 1024, 768, 32, "GaussDemo2" )
Dim Field( 768,768 )
Dim Col(128)
For n=0 To 31 : t = n*8
Col(n ) = RGB( 0, 0, t)
Col(n+32) = RGB( t, 0, 255-t)
Col(n+64) = RGB( 255, t, 0)
Col(n+96) = RGB( 255, 255, t)
Next
Prec = 500000
Range = 768
Range2 = Range / 2
PiHalf.f = #PI / 2
Repeat
ExamineKeyboard()
For n=0 To 25000
X = Range2 + Range2 * (ASin( (Random(Prec*2) - Prec ) / Prec ) / PiHalf)
Y = Range2 + Range2 * (ASin( (Random(Prec*2) - Prec ) / Prec ) / PiHalf)
If Field(X,Y)<127 : Field(X,Y)+1 : EndIf
Next
StartDrawing(ScreenOutput())
For t=0 To 767
For n=0 To 767
Plot( 128+n, t, Col(Field(n,t)))
Next
Next
B = 1 - B : If B : Line(0,0,32,0,$FF0000) : Else : Line(0,0,32,0,$0000FF) : EndIf
StopDrawing()
Delay(0)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Code: Alles auswählen
InitSprite()
InitKeyboard()
OpenScreen( 1024, 768, 32, "GaussDemo3" )
Dim Field( 512,512 )
Dim Col(224)
For n=0 To 31 : t = n*8
Col(n ) = RGB( t, 0, 0)
Col(n+ 32) = RGB( 255, t, 0)
Col(n+ 64) = RGB( 255-t, 255, 0)
Col(n+ 96) = RGB( 0, 255, t)
Col(n+128) = RGB( 0, 255-t, 255)
Col(n+160) = RGB( t, 0, 255)
Col(n+192) = RGB( 255, t, 255)
Next
Prec = 500000
Range = 512
Range2 = Range / 2
PiHalf.f = #PI / 2
Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
For n=0 To 15000
X = Range2 + Range2 * (ASin( (Random(Prec*2) - Prec ) / Prec ) / PiHalf)
Y = Range2 + Range2 * (ASin( (Random(Prec*2) - Prec ) / Prec ) / PiHalf)
If Field(X,Y)<223 : Field(X,Y)+1 : EndIf
Next
StartDrawing(ScreenOutput())
For t=0 To 511
For n=0 To 511
X = 470 + (n*2/3) - (t/2)
Y = 300 + (n/3) + (t/2)
z=Field(n,t)
Plot( X, Y-z, Col(z))
Next
Next
B = 1 - B : If B : Line(0,0,32,0,16711680) : Else : Line(0,0,32,0,255) : EndIf
StopDrawing()
Delay(0)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)