"Lotto-Simulator-Programm" (7 unterschiedliche Zufallszahlen generieren)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
PythonLuca22
User
Beiträge: 1
Registriert: Mittwoch 31. März 2021, 03:31

Hey Leute! :D

Ich bin blutiger Python-Anfänger, mir kam aber die Idee eines total interessanten Programms. Ich möchte herausfinden, wie oft man theoretisch Lotto spielen müsste, wenn man immer die exakt gleichen sieben Zahlen verwendet. Das Programm soll dann so lange sieben unterschiedliche Zahlen generieren, bis alle sieben Zahlen mit den vorher eingestellten Zahlen (Variablen gen_number1, gen_number2, usw.) übereinstimmen.

Die Generierung soll immer als 7er-Block erfolgen. D.h.: 7 Zahlen werden generiert -> stimmen nicht alle exakt überein? -> 7 neue Zahlen -> usw. Dabei muss natürlich beachtet werden, dass die Bedingung nicht ist, dass die erste voreingestellte Nummer auch mit der ersten generierten Nummer übereinstimmen muss, sondern einfach nur überprüft wird, ob alle Zahlen vorkommen.

Das Programm soll mir dann, wenn es fertig ist, ausgeben, wie viele Versuche es gebraucht hat.

Ich bräuchte nun Hilfe bei zwei Dingen:

- wie generiere ich blockweise sieben unterschiedliche Zahlen?
- wie kann ich die Generierung stoppen lassen, sobald alle Zahlen übereinstimmen? Ich hätte das eigentlich mit "try", einer Variable und "while" gemacht. Und solange die Variable True ist, soll er das durchführen. Aber diese Variante erfordert eine Nutzereingabe (meines Wissens nach zumindest?!)

Würde mich total freuen, wenn ihr mir dazu helfen könntet! Wenn es möglich ist, so genau es geht. Ich bin, wie gesagt, absoluter Anfänger. Wenn ihr mir sagt: ,,Tu das ganze in eine ,,so und so-Schleife", dann weiß ich nicht unbedingt, was genau gemeint ist. :)


Vielen Dank vorab schonmal!!! :D
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
- wie generiere ich blockweise sieben unterschiedliche Zahlen?
Schau' dir mal die `sample` Methode aus dem `random` Modul an, was Python standardmäßig an Bord hat.

Zur Schleife: `while` ist schon der richtige Ansatz. `try` brauchst du nicht - hat auch nichts mit Schleifen zu tun, sondern dient zur Fehlerbehandlung.
Aber diese Variante erfordert eine Nutzereingabe (meines Wissens nach zumindest?!)
Nee, wieso? Mit while baust du eine Schleife, die so lange durchlaufen wird, wie die Bedingung hinter dem `while` wahr ist. Das hat mit einer Benutzereingabe nichts zu tun.

Am besten zeigst du mal deinen bisherigen Code (egal, wie falsch der sein mag), dann kann man konkreter helfen.

Gruß, noisefloor
Thants
User
Beiträge: 34
Registriert: Dienstag 1. Dezember 2020, 12:00

Das random-Modul wurde schon genannt. Außerdem solltest du dir nochmal die Unterschiede der grundlegenden Datentypen in Python verinnerlichen, insbesondere der Unterschied zwischen einem Set und einer Liste und wie man das hier benutzen könnte.

Hast du dir auch mal überlegt, die Aufgabe auch theoretisch zu lösen? Dann hast du zum einen schon einen Anhaltspunkt wie lange das Programm laufen muss und kannst dann Theorie und Praxis vergleichen.
Um die Wahrscheinlichkeit für einen Gewinn zu bestimmen musst du nur zwei Dinge ermitteln, zum einen die Anzahl aller möglichen Ereignisse (also wie viele Möglichkeiten gibt es beim Ziehen von 7 Zahlen) und dann die Anzahl der positiven Ereignisse (die zu einem Gewinn führen). Die Anzahl der positiven Ereignisse geteilt durch die Gesamtanzahl ist dann die Wahrscheinlichkeit, dass man bei einem Spiel gewinnt. Oder andersrum, die Gesamtanzahl geteilt durch die Anzahl positiver Ereignisse ergibt die Anzahl Spiele, die du im Schnitt spielen musst, um 1x zu gewinnen.

Als ganz einfaches Beispiel mal eine Ziehung einer einzigen Zahl von 49 Kugeln mit den Zahlen von 1-49. Es gibt insgesamt 49 mögliche Ergebnisse (jede Kugel ist möglich) und aber nur 1 positives Ergebnis (die Zahl, auf die du getippt hast). Die Wahrscheinlichkeit bei einem Spiel zu gewinnen ist also 1/49 (etwa 2%) und wenn du permanent spielst würdest du im Schnitt alle 49 Spiele gewinnen. Wie du schon sagtest, muss man dann bei mehreren Kugeln beachten, dass die Reihenfolge eines Tipps keine Rolle spielt. Bei zwei Kugeln gäbe es also nicht nur 1 positives Ereignis, sondern 2 (wenn man bei den Gesamtmöglichkeiten die Reihenfolge beibehält).
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@PythonLuca22: es ist auch unerheblich, ob Du immer die gleichen Zahlen tippst. Die Ziehungen sind ja unabhängig voneinander. Falls lange keine 42 mehr gezogen wurde, steigt die Wahrscheinlichkeit für eine 42 bei der nächste Ziehung nicht. D.h. Du kannst Dir irgendeine Zahlenfolge ausdenken, oder auch immer wieder variieren, und schauen, wann "sorted(random.sample(range(1, 50), k=7))" die gleiche Auswahl liefert.

Nehmen wir an, Du spielst jede Woche mit fünf Tipps. Dann sind das pro Jahr ca. 250 Rateversuche. Nun kannst Du Dir ausrechnen, wieviel Jahre Du spielen musst, um den Hauptgewinn zu machen (oder 6 oder 5 Richtige, je nach k). Die Zahl der Versuche multiplizierst Du dann mit Deinem Einsatz, und dann weißt Du auch, was Dich der "Gewinn" gekostet hat.

Manche gewinnen früher; deswegen spielen ja auch so viele. Geschichtlich ist staatliches Lotto eingeführt worden, um zusätzliche Steuereinnahmen zu erzielen. Und das funktioniert bis heute ziemlich gut :)
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Mein Lieblingszitat zum Thema: „Lottery: A tax on people who are bad at math.“ ― Ambrose Bierce, The Unabridged Devil's Dictionary

Und leider spielen wohl überdurchschnittlich viele ”arme” Leute Lotto, weil sie das System irgendwie nicht verstehen. Ich wette wenn man denen sagen würde nicht bei 6 richtigen aus 49 gewinnen sie, sondern sie müssen *eine* Zahl aus 10.068.347.520 richtig auswählen um zu gewinnen, würden sie es nicht machen. Obwohl es genau das gleiche ist.

Das ist also eine Steuer die arme Leute trifft weil der Staat bei der Bildung versagt hat. Wäre ich Verschwörungsmythiker… 😉

Und wenn man sich dann noch anschaut was in Lottogesellschaften für ”verdiente” Politiker geparkt werden und was die da von dem Geld einsacken…

Man müsste eigentlich mal eine fette Anti-Lotto-Kampagne starten.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
LeSchakal
User
Beiträge: 23
Registriert: Dienstag 5. Februar 2019, 23:40

Das Problem ist nicht die Unwahrscheinlichkeit des Hauptgewinns. Das weiß (fast) jeder und ein bisschen Hoffnung bleibt.
Problematisch sind die kleinen "Gewinne", die suggerieren, dass man, auch wenn man nur den Spieleinsatz zurückbekommen hat, gewonnen habe. Das steigert die Häufigkeit der Glücksmomente. Und verzerrt deshalb die gefühlte Gewinnwahrscheinlichkeit.

Beispiel:

Du kaufst ein Los und gewinnst den Einsatz zurück. (Juhu!)
Am nächsten Tag kaufst du dir mit dem Gewinn ein neues Los und gewinnst wieder den Einsatz zurück. (Schon zweimal gewonnen!)
Am dritten Tag kaufst du dir mit dem Gewinn wieder ein Los und ziehst eine Niete. (Pech, aber nicht so arg, du hast ja schon zweimal gewonnen, also Gewinnwahrscheinlichkeit 2:3)

Und so geht's weiter, immer mit der Hoffnung, unter den "Gewinnen" auch mal was Größeres zu haben.
Antworten