[Python] Creazione albero stocastico solo con dizionari

Daniele Varrazzo piro a develer.com
Lun 17 Set 2012 19:02:56 CEST


On 2012-09-17 17:21, Antonio Piepoli wrote:
> def choose(p):
>     r = random.random()
>     index = 0
>     while (r > 0):
>       r -= probs[index]
>       index += 1
>     return index-1

Hai sbagliato nome di variabile: p/probs. Non so se è un errore di 
copia e incolla nella mail. Comunque carina: ora è una funzione più 
generica a cui passi solo il vettore di probabilità e ti restituisce 
l'indice di quella scelta. Non male.

Io l'avrei scritta così, ma è solo una questione idiomatica: funzionano 
allo stesso modo:

     def choose2(probs):
         r = random.random()
         for i, p in enumerate(probs):
             r -= p
             if r < 0:
                 return i

Ha lo stesso problema di essere o(n) nel numero di elementi da 
scegliere, mentre la mia soluzione nella prima mail era o(1), ma credo 
sia ininfluente per te, e la mia aveva svantaggi di altro tipo.

-- 
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com


Maggiori informazioni sulla lista Python