smarti Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Guten Tag zusammen. ICh hab mal hier ein Problem mit einer Aufgabe da ich auf keinen Lösungsansatz komme. Ich hoffe ihr könnt mir helfen! Aufgabe: Das folgende Modell gibt stark vereinfacht eine Vorstellung davon, wie Öl in den Erdboden sickert. Wir stellen uns einen vertikalen Schnitt durch den Erdboden vor und verwenden dafür ein rechteckiges Feld mit ganzzahligen Koordinaten. Die y-Achse des Koordinatensystems sei nach unten Orientiert, die x-Achse nach rechts. Über die anfängliche Verteilung des Öls nehmen wir folgendes an: Das Öl befindet in den mittleren beider Viertel der obersten Erdschicht. Über das eindringen des Öls in den Boden machen wir folgende Annahmen: Mit der Wahrscheinlichkeit p(0<p<1) sickert das Öl diagonal nach unten links, und mit derselben Wahrscheinlichkeit, aber vom ersten Zufallsergebnis unabhängig, nach diagonal unten rechts. p kann dabei als Maß für die Bodenebschaffenheit (bez. Durchlässigkeit von Flüssigkeiten) angesehen werden. Im ergebnis sickert die Flüssigkeit durch, wenn die unterste Schicht von Flüssigkeit erreicht wird. Schreiben Sie eine Win32-Anwendung mit folgender Funktion: Schreiben Sie ein Programm, dass das Sickern simuliert und graphisch darstellt. Die Feldgröße soll dabei 500*375 betragen. Die Wahrscheinlichkeit p soll für verschiedene Werte im Quelltext(als Makro) editiert werden. Für welchen Wert p geben Sie die Bodenschicht als sicher(es sickert nichts durch) an? Vielen dank im vorraus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Und was sollen wir für Dich machen? Deine Aufgabe? Nein, wir sind keine Hausaufgabenlösungsanstalt. Bitte zeige einmal, was Du Dir für Gedanken gemacht hast Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Win32 ist doch C/C++ und nicht C#. :beagolisc Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Akaria Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Glückwunsch zu dieser Aufgabe. Ich würde dir erstmal empfehlen, zu überlegen, wie man den spaß rechnet,(stell dir ne formel auf). Meistens kommt man dann weiter. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Ist doch bisschen mit der normalisierten Randomfunktion spielen und durch iterieren Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hahne Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Win32 ist doch C/C++ und nicht C#. :beagolisc Man kann unter C#.NET auch mit USING die Win32 API einbinden Geht also auch mit C# Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
smarti Geschrieben 6. Mai 2009 Autor Teilen Geschrieben 6. Mai 2009 @ flashpixx also meine ideen sind, dass ich ja eigentlich nur die erste reihe machen muss und dann jeden einzelen pixel mit random laufen lasse. Danach möchte ich dann wieder jeden Pixel abfragen und das ganze nochmal nur halt er soll nur die schwarzen nehmen und ich weiß nicht genau wie ich das machen soll. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 6. Mai 2009 Teilen Geschrieben 6. Mai 2009 Der Ansatz klingt doch schon mal gut. Naja überleg Dir einmal, was die RandomFunktion liefert. Sie liefert Zahlen zwischen 0 <= p <= 1. Wenn ich jetzt eine Münze werfe, dann würde ich das so formulieren (Pseudocode): boolean muenzeKopf = RandomFloat <= 0.5 Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SpamBot Geschrieben 15. Mai 2009 Teilen Geschrieben 15. Mai 2009 public void sicker() { p = (double)trackBar1.Value / 100; double rand = randomiza.NextDouble(); int initCount = points.Count; for (int i=0;i< initCount ;i++ ) { if (rand < p) { points[i].X--; points[i].Y++; } rand = randomiza.NextDouble(); if (rand < p) { points[i].X++; points[i].Y++; } if(points[i].Y > panel1.Height) finish(); } } Als Anhaltspunkt, wird so wahrscheinlich nicht out oft the box funktionieren, solls auch garnicht. Aber die Richtung stimmt. mfg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
AndiE Geschrieben 15. Mai 2009 Teilen Geschrieben 15. Mai 2009 Hi, würde der das Code hergeben: Bei p=30% fällt (durchschnitlich) bei 100 Versuchen in 30 Fällen der Tropfen nach unten links, in 30 Fällen de rTropfen nach unten rechts und in den anderen 40 Fällen bleibt der Tropfen, wo er ist? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SpamBot Geschrieben 15. Mai 2009 Teilen Geschrieben 15. Mai 2009 Prizipiell ja, aber keine Ahnung ob die Random Klasse wirklich zufällige Zahlen liefert _Wirklich_ zufällige Zahlen sind ja nicht so einfach zu erzeugen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 16. Mai 2009 Teilen Geschrieben 16. Mai 2009 _Wirklich_ zufällige Zahlen sind ja nicht so einfach zu erzeugen... Es sind Pseudozufallszahlen, steht aber auch in der Beschreibung. Evtl Hilft Dir aber auch noch die Methode "nextGaussian" aus der Klasse. Wenn Du wirklich "echte" Zufallszahlen brauchst, dann musst Du extra Hardware organisieren Phil Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mepp Geschrieben 5. Juni 2009 Teilen Geschrieben 5. Juni 2009 Hat sich hier nochmal was ergeben? Wurde die Aufgabe gelöst? Sonst schau ichs mir vielleicht mal an dieses WE! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
impa55 Geschrieben 12. Januar 2011 Teilen Geschrieben 12. Januar 2011 Die Aufgabe wurde uns auch gestellt. Hast du bereits eine Lösung? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.