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

Zufallszahlen nicht doppelt vorkommen

Beitragvon Pille0503 » 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:

Beitragvon meneliel » 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 ...
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Re: Zufallszahlen nicht doppelt vorkommen

Beitragvon Leonidas » 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: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » 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

Beitragvon audax » Donnerstag 17. April 2008, 14:26

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

Beitragvon numerix » 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

Beitragvon Jan-Peer » 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:

Beitragvon meneliel » 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: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » 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

Beitragvon Jan-Peer » 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

Beitragvon numerix » 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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » 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: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » 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:

Beitragvon Sr4l » 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.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » 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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder