[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