C# :: Aufgabe #316 :: Lösung #1
2 Lösungen

#316
Abschätzung der Gewinnchancen eines KENO-Types
Anfänger - C#
von hollst
- 08.05.2020 um 22:39 Uhr
Zur Erinnerung, was ist KENO: Aus 70 Zahlen werden 20 Gewinnzahlen per Zufallsgenerator ermittelt.
Es gibt die KENO-Typen 2, 3 ... 10, d. h. man kann 2, 3 ... 10 Zahlen aus den Zahlen 1 ... 70 wählen.
Bei KENO-Typ N können 0, 1 ... N gewählte Zahlen in den 20 gelosten Gewinnzahlen enthalten sein
(je mehr, desto höher natürlich der Gewinn).
Die Programmieraufgabe bestehe darin, mittels stochastischer Simulation die Wahrscheinlichkeit dafür abzuschätzen,
wie hoch die Chance ist, bei KENO-Typ N, 0, 1, 2 ... oder gar N Richtige auf seinem Tippzettel zu haben?
Die exakten Werte könnt ihr u. a. z. B. auf
https://www.sachsenlotto.de/portal/spiele/keno/gewinnquoten.jsp
nachsehen.
Es gibt die KENO-Typen 2, 3 ... 10, d. h. man kann 2, 3 ... 10 Zahlen aus den Zahlen 1 ... 70 wählen.
Bei KENO-Typ N können 0, 1 ... N gewählte Zahlen in den 20 gelosten Gewinnzahlen enthalten sein
(je mehr, desto höher natürlich der Gewinn).
Die Programmieraufgabe bestehe darin, mittels stochastischer Simulation die Wahrscheinlichkeit dafür abzuschätzen,
wie hoch die Chance ist, bei KENO-Typ N, 0, 1, 2 ... oder gar N Richtige auf seinem Tippzettel zu haben?
Die exakten Werte könnt ihr u. a. z. B. auf
https://www.sachsenlotto.de/portal/spiele/keno/gewinnquoten.jsp
nachsehen.
#1

von JKooP (18090 Punkte)
- 23.05.2020 um 10:08 Uhr
NET Core 3.x
C#-Code

using System; using System.Linq; namespace CS_Aufgabe_316_Keno { public enum KenoTypen { Typ2 = 2, Typ3, Typ4, Typ5, Typ6, Typ7, Typ8, Typ9, Typ10, } class Program { static void Main(string[] args) { const int AnzahlZiehungen = 1_000_000; const KenoTypen KenoTyp = KenoTypen.Typ8; var arrRichtige = Keno(KenoTyp, AnzahlZiehungen); Console.WriteLine($"KENO {KenoTyp}:\n"); for (int i = 0; i < arrRichtige.Length; i++) { Console.WriteLine($"{i,2}: {100 * arrRichtige[i] / (double)AnzahlZiehungen,8:F5} %"); } } static int[] Keno(KenoTypen kenoTyp, int anzahlZiehungen) { var anzahlGetippteZahlen = (int)kenoTyp; var arrRichtige = new int[anzahlGetippteZahlen + 1]; var listeGewinnzahlen = Enumerable.Range(1, 70).OrderBy(x => Guid.NewGuid()).Take(20); var listeGetippteZahlen = Enumerable.Range(1, 70).OrderBy(x => Guid.NewGuid()).Take(anzahlGetippteZahlen).ToList(); for (var i = 0; i < anzahlZiehungen; i++) { arrRichtige[listeGewinnzahlen.Intersect(listeGetippteZahlen).Count()]++; } return arrRichtige; } } }
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1