Presentación y probabilidades

Víctor victorpernand en gmail.com
Vie Abr 25 10:52:37 CEST 2008


Hola, un saludo a todos los de la lista. Soy novato en python. Tengo algunas
ideas sencillas que me gustaría llevar a la práctica, pero antes tengo que
aprender y practicar.

Para empezar, estoy intentando hacer una función de permita elegir entre los
elementos de una lista, según una lista de probabilidades. Por ejemplo, si
le doy la lista ['azul','rojo','verde'] y la lista de probabilidades en
tantos por cientos [50,25,25] o en cualquier otra relación como [ 2,1,1]
(que sería igual que el anterior), me devuelve uno de los tres colores,
según las probabilidades de apararición.

Esto es lo que he hecho hasta ahora:

from random import randint

def sumalista(lista):
    "suma los elementos de una lista de numeros"
    return reduce (lambda x,y: x+y, lista)

def decide(lista, probab):
    tmp=[0]
    for x in range(len(probab)):
        tmp.append(probab[x]+tmp[x])
    #normaliza a 1000
    normaliza= [x*1000/sumalista(probab) for x in tmp]

    num=randint(0,999)
    elemento= len([x for x in normaliza if x<=num])-1
    return lista[elemento]


Si hago
print decide(['platano','manzana'],[99,1])

parece que funciona.  ¿Me podéis aconsejar?, y también recomendaciones sobre
usar listas de compresion o no, y el estilo python.

Muchas gracias de antemano.

            Víctor
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es