Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

WhiteMike

Alter Hase

  • »WhiteMike« ist der Autor dieses Themas

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

1

15.05.2009, 16:13

[Java] Zufallszahlen

Ich wollte aus Langeweile ein Programm programmieren, um Pi zu bestimmen. Darin benutze ich unter anderem Zufallswerte.

Ich habe einen Quadrat und einen ihn ausfüllenden Kreis darin. Nun beschieße ich die Konstruktion mit Zufallswerten und prüfe, ob diese im Kreis oder dem Quadrat liegen.
Eigentlich müsste bei genügend Treffern Pi rauskommen.

Dummerweise kommt nach 100.000 Punkten nicht Pi, sondern etwa 3,665 als Resultat und nun bin ich am Überlegen, wie das passieren kann. Die Berechnungen an sich scheinen zu stimmen, aber aus irgendeinem Grund befinden sich mehr Punkte im Kreis als im Quadrat.

Kann es an den Zufallszahlen liegen?

Mit freundlichen Grüßen,
WhiteMike

2

15.05.2009, 16:47

Ja, theoretisch kannst du am PC keine "zufälligen" zahlen erzeugen, nur Zahlenfolgen, die scheinbar zufällig sind.
Ansonsten gibt es auch sehr viel elegantere Methoden, PI zu bestimmen, es gibt ein paar Folgen die gegen PI konvergieren.
Diese hier mag ich besonders, da sie so schön kompliziert ist :)

(Link)
Lieber dumm fragen, als dumm bleiben!

WhiteMike

Alter Hase

  • »WhiteMike« ist der Autor dieses Themas

Beiträge: 507

Wohnort: Ulm

Beruf: Schüler

  • Private Nachricht senden

3

15.05.2009, 17:26

Gut, hier geht es aber nicht um Möglichkeiten, Pi zu bestimmen. Auch dass es computergestützt keine wirkliche Zufälligkeit gibt, weiß ich auch.

Die Frage ist einfach, ob die Zufallszahlen wirklich so schlecht sein können, dass ich eine Abweichung von ca. 15% von Pi habe.

Mit freundlichen Grüßen,
WhiteMike

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

4

15.05.2009, 17:44

Zum einen sind die Zufallszahlen Statistisch nicht zufällig, zum anderen kann es auch mit echten Zufallszahlen passieren das du Pi nicht erreichst...

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

5

15.05.2009, 18:37

Hast dus mal mit der SecureRandom Klasse von Java versucht?
http://java.sun.com/javase/6/docs/api/java/security/SecureRandom.html

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

6

15.05.2009, 21:10

In meiner Diplomarbeit hatte ich (als Nebenkapitel) auch so einen Fall untersucht. Dabei wurde ein (1) Zufallszahlengenerator verwendet, um zweidimensionale Punkte zu bestimmen. Die aufeinanderfolgenden Zahlenwerte (und damit die x und y Koordinaten) waren dabei nicht unabhaengig "genug" voneinander. Bei geeigneten Rahmenbedingungen konnte man das sehr schoen sichtbar machen (es ergab dann ein Streifenmuster anstatt zufaellige 2D-Punkte). Vielleicht ists bei Dir ja so ein Effekt...

Gruesse,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

7

15.05.2009, 21:22

btw: Auf dieser Seite gibt es real randomness: http://www.random.org/

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

8

16.05.2009, 08:04

Naja aber deswegen eine Abweichung von von 3,1x auf 3,6x zu bekommen ist ja schon ziemlich übel. Ich könnte mir aber vorstellen, dass dein Algorithmus ziemlich schwach konvergiert, und du somit noch einige Durchläufe mehr starten musst.

Wenn du die Zahl der Durchläufe erhöhst, verbessert sich der Wert noch? Wenn ja kann es gut sein, dass du einfach noch weiter draufhauen musst.
Wenn nicht wird es wohl ein statischer Fehler sein.

Du könntest bei der vorgeschlagenen Webseite einen Haufen Random Numbers ziehen und damit alle N Zufallszahlen den Seed füttern.

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

16.05.2009, 09:30

Dumme Zwischenfrage: wie hast du denn die Flächenverhältnisse gewählt?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

10

16.05.2009, 11:43

Du hast jetzt nicht angegeben, wie viele Ziffern von 3,665 auch wirklich signifikant sind, also welche Ziffern sich mit zunehmendem n auch nicht mehr verändern. Ich vermute mal nur die erste... Du musst entweder n erhöhen (wahrscheinlich paar Milliarden um ein paar Stellen nach dem Komma zu erhalten) oder einen besseren Algorithmus verwenden.
Auch wärs wohl etwas schlauer, statt zufälligen Werten innerhalb eines Quadrates ein Raster darüber zu legen und die Punkte in regelmäßigen Abständen durchzugehen.

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

Werbeanzeige