[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