Entwickler-Ecke
Basistechnologien - Bearbeiten eines Arrays mit Zufallsverteilung
Magiehammer - Di 15.05.18 17:19
Titel: Bearbeiten eines Arrays mit Zufallsverteilung
Moin allerseits!
Ich bin dabei für eine Aufgabe im Studium ein Programm zu schreiben, bei dem ich jetzt vor folgendem Problem stehe:
Ich habe ein zweidimensionales Array, mit 8 Spalten und einer beliebigen Anzahl an Zeilen, je nach dem was der Benutzer eingibt.
Dieses Array wird komplett mit einsen gefüllt.
Nun sollen in diesem Array irgendwelche einsen zu Nullen werden, dabei soll jede eins zufällig (aber mit einem bestimmten Verhältnis) auf 0 gesetzt werden.
Also konkret bastel ich eine Schleife, die jede eins durch geht, und diese dann entweder zu einer null macht, oder eben nicht.
Und am Ende wird dann das Ergebnis ausgegeben, aber das ist kein Problem.
Jetzt weiß ich leider nicht, wie ich das schreiben soll. Ich habe die Stelle, an der die Bearbeitung passieren soll mit "//Hier wird das Array bearbeitet..." markiert.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| for (int sti = 1; sti != st+1; ++sti) { Console.WriteLine("{0}. Strahlteiler:", sti); { for (int yi = 0; yi < pzahl; yi++) { for (int xi = 0; xi < izahl; xi++) { } } for (int yi = 0; yi < pzahl; yi++) { for (int xi = 0; xi < izahl; xi++) { Console.Write("{0}", Photonen[xi, yi]); } Console.WriteLine(); }
} |
Leider funktioniert es nicht den Code hier richtig formatiert einzufügen, d.h. hier als Bild:
http://prntscr.com/ji8bro
Die Ausgabe funktioniert soweit, aber halt natürlich unbearbeitet.
Könntet ihr mir da helfen, zu schreiben wie diese Zufallsverteilung geschrieben werden muss?
Das Programm sieht angewandt aktuell so aus:
http://prntscr.com/ji8arz
Ich habe schon im Programm weiter oben das Verhältnis vom User eingeben lassen, und dass entgegengesetzte Verhältnis berechnet.
Konkret sieht das Verhältnis so aus: Variable pv1 zu Variable pv2 mit einem Wert von 0,irgendwas. Also im Bereich von 0 bis 1.
Mit freundlichen Grüßen,
Magiehammer
Moderiert von Th69: C#-Tags hinzugefügt
Th69 - Di 15.05.18 17:47
Hallo und :welcome:
kennst du schon die Klasse
Random [
https://msdn.microsoft.com/de-de/library/system.random(v=vs.110).aspx]?
Mittels
NextDouble() kannst du dir eine Zufallszahl im Bereich von 0 bis 1 liefern lassen und diese dann mit deinem 'Verhältnis der Eingabe' vergleichen und so entsprechend die Nullen setzen.
PS: Ich habe den Code für dich nacheditiert: [
cs]...[/cs]
Magiehammer - Di 15.05.18 17:58
Moinsen und Danke :D
Ja, ich hatte bereits damit ein wenig experimentiert, aber nicht so ganz was rausbekommen, was Zweckmäßig ist, evt. hilft da NextDouble(), dass schau ich mir nachher an.
Danke fürs nacheditieren, [cs] war mir so bislang nicht untergekommen :D
Werd heut Abend noch anderweitig beschäftigt sein, melde mich aber spätestens morgen wieder :)
Mit freundlichen Grüßen,
Magiehammer
Magiehammer - Di 15.05.18 21:12
Jawoll, habs hinbekommen :)
Ich danke vielmals, das "NextDouble()" war tatsächlich der Schlüssel :)
Komplett sieht es nun so aus:
http://prntscr.com/jibj49
Im Quellcode (für evt. spätere Leser):
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| Random Zufall = new Random();
for (int sti = 1; sti != st+1; ++sti) { Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("\n{0}. Strahlteiler:", sti); Console.ForegroundColor = ConsoleColor.White; { for (int yi = 0; yi < pzahl; yi++) { for (int xi = 0; xi < izahl; xi++) { if (Photonen[xi,yi] == 1) { double ZW = Zufall.NextDouble();
if (ZW <= pv2) { Photonen[xi, yi] = 0; } } } }
for (int yi = 0; yi < pzahl; yi++) { for (int xi = 0; xi < izahl; xi++) { Console.Write("{0}", Photonen[xi, yi]); } Console.WriteLine(); }
}
} |
Noch die Auswertung einbauen, und dann hab ichs schon geschafft.
3 Wochen vor Abgabe XD
Mit freundlichen Grüßen,
Magiehammer
Th69 - Mi 16.05.18 07:15
Ja, sieht gut aus. :zustimm:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!