[pyar] randomizar parte de una lista
Pablo Ziliani
pablo en kultroom.com
Jue Ene 6 00:21:19 ART 2011
On 01/05/2011 11:35 PM, Gustavo Campanelli wrote:
> 2011/1/5 Pablo Ziliani<pablo en kultroom.com>:
>> On 01/05/2011 11:07 PM, Gustavo Campanelli wrote:
>>> (...)
>>> Entonces hice un pequeño programa en python utilizando una función que
>>> encontré en la explicación del algoritmo Fisher-Yates en wikipedia,
>>> algoritmo que se usa para mezclar listas que no sean exageradamente
>>> largas. http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle
>> Supongo que habrás aprendido bastante en el camino. Cuando valorices más la
>> productividad:
>>
>> from random import shuffle
>>
>>
>> Saludos,
>> Pablo
>
> La gracia es que no uso el shuffle de random, sino su generador de
> números. El Shuffle que uso está definido como función, e implementa
> el algoritmo que comenté, que es mucho más eficiente para listas que
> random.shuffle.
Te juro que no tengo la menor intención de restarle mérito a tu trabajo,
pero la función que copiaste es casi literalmente el código de
random.shuffle (incluído el comentario del autor):
http://svn.python.org/view/python/trunk/Lib/random.py?view=markup#shuffle
De hecho, sin correr tests las diferencias que veo (xrange vs range,
int(random() * (i+1)) vs random.randrange(i+1)) me sugieren que
random.shuffle debería ser marginalmente más eficiente (aunque en tu
caso de uso sea irrelevante).
Quizás me expresé mal antes, lo que quise decir era que en caso de
necesitar acortar caminos (incluso si esto significara sacrificar
velocidad de ejecución) podías usar las pilas que vienen con python. No
era una sugerencia real, mucho menos una amonestación, era información
complementaria.
Saludos,
Pablo
More information about the pyar
mailing list