Zufallszahlen nicht doppelt vorkommen

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.
Pille0503
User
Beiträge: 2
Registriert: Donnerstag 17. April 2008, 13:36

Donnerstag 17. April 2008, 13:46

Hallo,
ich habe da ein kleines Problem.
Wir sollen in der Schule ein Programm schreiben, welches Zufallszahlen zwischen 1 und 49 erzuegt (also so zu sagen ein "Lottoprogramm"). Wie jeder weiß, können dabei Zahlen nicht zweimal gezogen werden. Und genau hier liegt das Problem. Wie bekommt man es hin, dass der Zufallszahlengenerator eine gezogene Zahl nicht noch einmal zieht?
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Donnerstag 17. April 2008, 13:48

... alle bereits gezogenen Zahlen in eine Liste schreiben. Und jede neue Ziehung mit der Liste vergleichen.

Aber das ist vielleicht ein bisschen umständlich ...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 17. April 2008, 13:50

Hallo Pille0503, willkommen im Forum,
Pille0503 hat geschrieben:Wie bekommt man es hin, dass der Zufallszahlengenerator eine gezogene Zahl nicht noch einmal zieht?
Indem man die bereits gezogenen Zahlen aus der Liste die man ``random.choice()`` übergibt vorher entfernt.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8481
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 17. April 2008, 13:52

oder [mod]random#random.shuffle[/mod] verwenden ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Donnerstag 17. April 2008, 14:26

oder random.sample ;)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Donnerstag 17. April 2008, 14:29

oder so lange Zufallszahlen zu einem set hinzufügen, bis 6 Elemente drin sind ...
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Donnerstag 17. April 2008, 14:54

Kreativwettbewerb? Man könnte auch so lange zufällige Zahlen aus einer mit range(1,50) erzeugten Liste entfernen, bis nur noch sechs Zahlen übrig sind :roll: :lol:
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Donnerstag 17. April 2008, 15:03

Jan-Peer hat geschrieben:Kreativwettbewerb? Man könnte auch so lange zufällige Zahlen aus einer mit range(1,50) erzeugten Liste entfernen, bis nur noch sechs Zahlen übrig sind :roll: :lol:
:D das gefällt mir :P
Benutzeravatar
jens
Moderator
Beiträge: 8481
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 17. April 2008, 15:10

lasst uns doch mal alle Varianten zusammentragen und mit timeit messen, die langsamste Variante hat gewonnen ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Jan-Peer
User
Beiträge: 166
Registriert: Dienstag 2. Oktober 2007, 10:55

Donnerstag 17. April 2008, 15:21

... und der Gewinner darf dann bei den Hausaufgaben helfen. :twisted:
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Donnerstag 17. April 2008, 15:55

jens hat geschrieben:lasst uns doch mal alle Varianten zusammentragen und mit timeit messen, die langsamste Variante hat gewonnen ;)
Ich biete dann diese Variante.
Mit etwas Glück schafft man es damit unter 10 Sekunden ...

Code: Alles auswählen

from random import random

numbers = []
while len(numbers)<6:
    n = 0
    while random()>.000001:
        n += 1
    n = n % 49 + 1
    numbers = [] if n in numbers else numbers+[n]
print numbers
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 17. April 2008, 16:03

jens hat geschrieben:die langsamste Variante hat gewonnen ;)
Warum gerade die?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8481
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 17. April 2008, 16:05

...nur so ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Donnerstag 17. April 2008, 16:24

Leonidas hat geschrieben:
jens hat geschrieben:die langsamste Variante hat gewonnen ;)
Warum gerade die?
Weil moderne CPUs ausgelastet werden müssen, sonst wären die unnötig und CO2 Sünder.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 17. April 2008, 17:58

Sr4l hat geschrieben:sonst wären die unnötig und CO2 Sünder.
Grad durch Auslastung können sie nicht in einen Modus mit geringerem Takt schalten um Strom zu sparen :P
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten