Tim Tepaße: Zufallszahlen ohne Wiederholung (Python)

Beitrag lesen

Ich  bin auf der Suche nach einem Algorithmus, der mir aus einem Tupel von fortlaufenden Zahlen (zb. 0-999) ohne Wiederholung zufällige Werte liefert.

random.randrange gibt sogar eine zufällige Zahl aus einem Intervall zurück, ohne dies zu konstruieren. Wenn man das Intervall und die Liste jeweils anpasst, kann man damit einen Generator basteln, der zufällige Objekte aus einer Liste ausspuckt:

~~~python import random

foo = "eins zwei drei vier fuenf sechs".split()

def random_elements(li):
      li = li[:]                            # Liste kopieren
      while li:
          index = random.randrange(len(li)) # Zufälliger Index aus dem Intervall
          element = li.pop(index)           # Element aus der kopierten Liste entfernen
          yield element

for el in random_elements(foo):
      print el

  
Eventuell kannst bei Deinem Programm auch auf den [Listen-Kopier-Trick](http://diveintopython3.org/native-datatypes.html#slicinglists) (`li=li[:]`{:.language-python}) verzichten und Speicher sparen.