[pyar] ayuda con un algoritmo, o algo.

DF-- dj.foguelman en gmail.com
Jue Feb 2 15:33:44 ART 2012


Yo entiendo que necesitas lo siguiente:

2012/2/2 John Rowland Lenton <john.lenton en canonical.com>

>
> Tengo listas. Asociado a cada lista tengo un peso,

quiero armar una lista que tenga 10 elementos tal que:

  * el número de elementos de cada sub-lista original en la lista de salida
> sea proporcional al número que traía y al peso,

  * que favorezca las minorías (es decir, si una sublista traía un sólo
> elemento, que esté todavía representada en la salida, por más que todas las
> otras hayan traído 10).
>
>
#!/usr/bin/env
import random

#estas son tus 6 listas armadas
queues = [{"muestra": random.sample(xrange(0, 1000), random.randint(1,
100)),
            "peso":random.random()} for i in range (6) ]

# Aca definis la distribucion, esta es proporcional al peso de la lista.
def get_distribution(seq):
    dist = len(seq["muestra"]) * seq["peso"]
    if dist == 0:
        dist += 1
    return int(dist)


res = []
for el in queues:
    k = get_distribution(el)
    print "Sublista de %d elementos, se tomaran %d elementos al 'azar'" %
(len(el["muestra"]), k)
    res.append(random.sample(el["muestra"], k))
#ahora aplano la lista

print reduce(lambda x, y: x + y, res)[:10]
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20120202/34666fbd/attachment.html>


More information about the pyar mailing list