( log69 | 2010. 10. 03., v – 22:03 )

adott tömb elemeiből szeretnél kiválasztani mindig egyet úgy, hogy még egyszer ugyanazt már ne, és közben hatékonyan? remélem jól értem.

akkor én így csinálnám: a véletlen index helyén és az utolsó elemet felcserélem, így az egyszer már kiválasztott elem a tömb végére kerül mindig, és az eddigi hossz -1 nagyságon nézem már a következőt csak, és véletlen számot is mindig eggyel kisebb intervallumon generálok.

részemről python-ban így nézne ki:


#!/usr/bin/python

import random

lista = ["szeppen1", "szippan2", "szappan3", "csappan4", "csuppan5"]

count = len(lista)-1

while count > -1:
    num = random.randint(0, count)
    lista[num], lista[count] = lista[count], lista[num]
    print lista[count]
    count -= 1