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
Zitat
Für ein Würfelspiel, bei dem der Computer auch würfeln muss, wird ein Zufallsgenerator gebraucht. Dieser soll vorher auf seine Güte überprüft werden. Dies geschieht dadurch, dass dieser sehr oft (z.b. 10000 mal) eine Zufallszahl in einem bestimmten Bereich (z.B. 1 – 6) generiert und mitgezählt wird, wie oft jede Zahl auftritt. Die Anzahl, wie oft jede Zahl auftritt, und deren Prozentanteil sind am Ende auszugeben.
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 45 46 47 48 |
static void Main(string[] args) { Random rnd = new Random(); int[] zahlen = new int[6]; int help = 0; zahlen[0] = 0; zahlen[1] = 0; zahlen[2] = 0; zahlen[3] = 0; zahlen[4] = 0; zahlen[5] = 0; for (int i = 1; i <= 10000; i++) { help = rnd.Next(1, 7); switch (help) { case 1: zahlen[0]++; break; case 2: zahlen[1]++; break; case 3: zahlen[2]++; break; case 4: zahlen[3]++; break; case 5: zahlen[4]++; break; case 6: zahlen[5]++; break; } } float prozent = zahlen[0]/(10000/100); Console.WriteLine("Die 1 kommt " + zahlen[0] + " mal vor. (" + prozent + "%)"); prozent = zahlen[1] / (10000 / 100); Console.WriteLine("Die 2 kommt " + zahlen[1] + " mal vor. (" + prozent + "%)"); prozent = zahlen[2] / (10000 / 100); Console.WriteLine("Die 3 kommt " + zahlen[2] + " mal vor. (" + prozent + "%)"); prozent = zahlen[3] / (10000 / 100); Console.WriteLine("Die 4 kommt " + zahlen[3] + " mal vor. (" + prozent + "%)"); prozent = zahlen[4] / (10000 / 100); Console.WriteLine("Die 5 kommt " + zahlen[4] + " mal vor. (" + prozent + "%)"); prozent = zahlen[5] / (10000 / 100); Console.WriteLine("Die 6 kommt " + zahlen[5] + " mal vor. (" + prozent + "%)"); Console.ReadLine(); } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
C#-Quelltext |
|
1 2 |
for (int i = 1; i <= 10000; i++) zahlen[rnd.Next(6)]++; |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
static void Main(string[] args) { Random rnd = new Random(); int[] zahlen = new int[6]; for (int i = 0; i < 10000; i++) zahlen[rnd.Next(zahlen.Length)]++; for ( int i = 0; i < zahlen.Length; i++ ) Console.WriteLine("Die " + (i + 1) + " kommt " + zahlen[i] + " mal vor. (" + (zahlen[i] / 100.f) + "%)"); Console.ReadLine(); } |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
static void Main(string[] args) { Random rnd = new Random(); int[] zahlen = new int[6]; for (int i = 1; i <= 10000; i++) zahlen[rnd.Next(6)]++; for ( int i=0; i<zahlen.Length; i++ ) Console.WriteLine("Die " + (i + 1) + " kommt " + zahlen[i] + " mal vor. (" + (zahlen[i] / 100.f) + "%)"); Console.ReadLine(); } |
Zitat
4) Dividiert man einen Integer durch einen Integer (zahlen[x]/100), dann fliegen da Nachkommastellen weg. Daher muss 16% rauskommen (sofern Random nicht totaler Müll ist)
5) Wenn Du einen float erhalten willst, dann musst Du auch mit float arbeiten: 100.f
Zitat
6) Es gibt Schleifen. Nutze sie.
C#-Quelltext |
|
1 |
Console.WriteLine(string.Format("Die {0} kommt {1} mal vor. ({2}%)", i + 1, zahlen[i], zahlen[i] / 100.f)); |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Und es gehört kein PUNKT nach der 100. Also es gehört so: 100f
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Werbeanzeige