Ich glaube, du hast da etwas gründlich missverstanden. Die PB-Gegner die offensichtlich schlechten PB-Code geschrieben haben, sollen dass doch bitte nächstes Mal richtig schlecht machen damit der eigene Vorsprung noch größer wird. Mein Code war für PB gedacht, damit sich so mancher Blitzmaxler der es nötig hat noch viel toller vorkommen kannDeeem2031 hat geschrieben: ...?
Dann wäre es aber langsamer als die PB-Variante - "DOTX * DOTX + DOTY * DOTY" is doch die schnellste Variante...
...ja ich weiß, der Beitrag war eh nich ernst gemeint
Geschwindigkeit der Beta7
- freedimension
- Admin
- Beiträge: 1987
- Registriert: 08.09.2004 13:19
- Wohnort: Ludwigsburg
- Kontaktdaten:
Danke, das war mir nicht aufgefallen. Wenn ich wieder zu Hause bin werde ich nochmal alle Source vergleichen, damit auch wirklich alles mit Rechten Dingen zugeht. Naja, am Float Handling von BMX kann ich natürlich nix ändern
Aber ich bin froh, dass ausser mir noch andere Leute den Source durchsehen. Nur so können Fehler ausgemerzt werden, also danke an dieser Stelle 
Dann kannst du gleich mal die Auflösung der Zufallsfunktion von bisher 100 auf 10000 oder sogar 100000 erhöhen, damit auch ein für PI angemessener Wert rauskommt (bisher erhält man immer einen Wert um 3.07):Sebe hat geschrieben:Danke, das war mir nicht aufgefallen. Wenn ich wieder zu Hause bin werde ich nochmal alle Source vergleichen, damit auch wirklich alles mit Rechten Dingen zugeht. Naja, am Float Handling von BMX kann ich natürlich nix ändernAber ich bin froh, dass ausser mir noch andere Leute den Source durchsehen. Nur so können Fehler ausgemerzt werden, also danke an dieser Stelle
Code: Alles auswählen
DOTX = Random(100000) / 100000.0
DOTY = Random(100000) / 100000.0Also so in etwa:
Code: Alles auswählen
EnableExplicit
Define.f DOTX, DOTY, PI
Define.l time1, time2
Define.q inside, drops, total
#solution = 100000
OpenConsole()
PrintN("MonteCarloPI - PureBasic")
Print("How many drops (0 - 9223372036854775807): ")
drops = ValQ(Input())
total = drops
time1 = GetTickCount_()
While drops > 0
DOTX = Random(#solution) / #solution
DOTY = Random(#solution) / #solution
If DOTX * DOTX + DOTY * DOTY <= 1.0
inside + 1
EndIf
drops - 1
Wend
time2 = GetTickCount_()
PI = 4.0 * inside / total
PrintN("PI (" + Str(total) + " drops) on float: " + StrF(PI, 18))
PrintN("Time needed: " + Str(time2 - time1) + " m/secs")
PrintN("Return to quit...")
Input()