Aufgabe 6.6

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Aufgabe 6.6
Sind Zeiten von 15 Sekunden normal, wenn man den mitgeliefertem JUnit test ausfuehrt?


Ja. Die Arbeitspakete, die im Test erzeugt werden, machen fast nichts anderes, als ein oder zwei Sekunden
zu schlafen.


Sorry, falsche Aufgabe. Ich dachte es ging um die 6.7.


Bevor dir keiner mehr antwortet:
Bei mir braucht es sogar 30 Sekunden; ich habe aber auch einen etwas langsameren Rechner. :wink:


Ich glaub in der Verlesung gehört zu haben, dass man bei der Random Methode als Seed nicht die Millisekunden nehmen soll. Habt ihr die Zufallszahlen wie in der Vorlesung zu Monte Carlo genommen? Wie habt ihr das gelöst? Könnt ihr mir ein Tipp geben? Danke


Also soweit ich mich erinnern kann meinte er in der Vorlesung etwas wie „wenn ihr Kryptographie betreibt, verwendet diese Methode der Zufallszahlen-Generation nicht“. Er meinte außerdem, dass es für solche Zwecke spezielle Bibliotheken gibt, die wesentlich bessere und sicherere Zufalls-Algorithmen bieten.
Ich denke jetzt mal nicht, dass der Zufall hier derart unvorhersehbar sein muss und wir das ruhig so machen dürfen.
Falls ich falsch liege, korrigiert mich bitte. :slight_smile:


https://fsi.informatik.uni-erlangen.de/forum/post/98674

Was meint er in den Post damit?


Das er eine Randomfunktion verwendet hat, die sich (statisch an der Klasse?) synchronisiert. Weshalb das ganze etwas langsam gelaufen ist.


@ceptoplex: Hast Recht mit Random gehts auch, vllt sollt man Math.Random() vermeiden.

Was ich nicht ganz hin bekomme, ist wie man die Flaeche aus der Anzahl der Treffer und nicht Treffer bestimmt. Kleines Schnitt-Rechteck bestimmen und dies mal das Verhaeltnis aus den Treffern?


Du brauchst ja das Verhältnis aus Treffern und Nicht-Treffern.
Und um zu bestimmen, ob es ein Treffer war, hilft dir vielleicht, wenn du dir mal den Betrag des Vektors und den Satz des Pythagoras ansiehst, Kreisradius ist hier ja 1. :wink:


Also damit ich das richtig verstehe. Das Verhältnis aus Treffern und nicht Treffern ist die SchnittFläche der beiden Ellipsen.
So was meinst du mit Kreisradius ist 1? wir haben doch zwei Ellipsen. Um zu überprüfen ob es ein Treffer war oder nicht gibt es doch contains();


Das von mir war auf die Monte-Carlo-Methode bezogen, tut mir Leid.
Dachte ich hätte das irgendwo gelesen, hab mich nicht auf die konkrete Aufgabe bezogen.
Wenn ich sie mir angesehen und noch niemand eine Lösung gepostet hat, kann ich mich ja nochmal melden. :wink:


Hallo, ich habe mal eine Frage zum Verständnis der Aufgabe:

Muss ich hier also random Punkte in einem Koordinatensystem erzeugen und dann das Verhältnis der Anzahl der Punkte die sich in beiden Elipsen befinden zu der Anzahl der Punkte nur in eienr Elipse berechnen?


Ich habe auch noch Probleme damit, auf die richtige “Formel” für die Berechnung der Fläche zu bekommen. Ähnlich wie NeubauMa habe ich ebenfalls versucht, das Verhältnis von Hits zu Misses (also Punkten, die in beiden bzw. nur einer der beiden Ellipsen vorhanden sind) herauszubekommen. Allerdings glaube ich auch, dass mein Ansatz, die zufälligen x- und y-Werte zu generieren, nicht ganz stimmt. Wie bekomme ich denn Punkte, die ausschließlich in einem der beiden Rechtecke liegen?


@NeubauMA & barghest: Denkt Ihr auch dran, dass Ihr das Verhältnis was Ihr dann rausbekommt noch mit der Fläche auf die Ihr Punkte geworfen habt, multiplizieren müsst?


Nein genau so hab ichs gesagt :smiley:


ja stimmt, das muss ich noch machen! So ganz so klar ist mir die Aufgabe aber trotzdem noch nicht: Heißt das jetzt ich schau mir an wie groß der Bereich der beiden Elipsen ist, verteil in diesem Bereich random Punkte, nehm dann das Verhältnis der Treffer zu den Fehlern und multipliziere das dann mit der gesamt Fläche in der ich gestreut habe?


Schnittfläche = (Punkte_in_der_Schnittfläche / (Punkte_in_der_Schnittfläche + Punkte_ausserhalb_der_Schnittfläche)) * Gesamtfläche

Die Gesamtfläche besteht aus dem Bereich,
in dem eure zufällig gewählten Punkte liegen können.

Bei
int x = Random(von 0-1) * 2;
int y = Random(von 0-1) * 3;

ist die Gesamtfläche 2 * 3.

War die Vorlesung so schlecht, dass nicht mal das klar geworden ist? :cry:

1 Like

pug, genau das wollte ich wissen und genau das hab ich auch versucht oben zu beschreiben! Von daher hätte mir ein einfaches ja auch genügt :wink:

Und nein, der Algorithmus war schon gut erklärt, ich hab mich nur doof angestellt…

Wie auch immer, ich denk mir ists jetzt klar, deshalb danke an die ganze Runde.

EDIT: Coole Sache, es läuft soweit, jedeoch schlägt der 3. (und nur der 3 testcase!) fehl. Hat jemand ne ahnung warum? Also gibts beim 3. Testcase was besonders zu beachten oder kann mir jemand da sonst irgend ein Tip geben?