Zum Inhalt springen

C# Programmieraufgabe


smarti

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

@ 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

		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

Link zu diesem Kommentar
Auf anderen Seiten teilen

_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

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 Wochen später...
  • 1 Jahr später...

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...