Se ho capito vuoi estrarre dei valori "vals" con le probabilita' "probs". Io ho provato cosi':
import random #vale: sum(probs) == 1.0 probs = [0.88514, 0.0946, 0.006757, 0.01351] vals = range(len(probs)) t = zip(probs,vals) def myrnd(): cs,x = 0,random.random() for k,v in t: cs += k if x <= cs : return v return v E myrnd ti restituisce 0 con probabilita' 0.88514, 1con prob. 0.0946 eccetera. Per verificare se piu' o meno ci siamo facciamo un milione di prove e vediamo le le frequenze sono in linea con le probabilita': #Test: dt = dict(zip(vals,[0 for x in vals])) N = 1000000 for n in range(N): k = myrnd() dt[k] += 1 for k,v in dt.items(): print k,(v+0.0)/N e a me da 0 0.884842 1 0.094789 2 0.006818 3 0.013551 Se confronti con probs = [0.88514, 0.0946, 0.006757, 0.01351] direi che ci siamo. Stefano 2016-04-30 13:59 GMT+02:00 Christian Barra <barrac...@gmail.com>: > A me pare che lei abbia una serie di eventi con probabilità note (il suo > vettore) e gli interessa generare numeri secondo quella distribuzione di > probabilità, in pratica generare sample da una funzione di probabilità che > ha definito lei. > > Credo che il link faccia al caso suo. > > _______________________________________________ > Python mailing list > Python@lists.python.it > http://lists.python.it/mailman/listinfo/python > >
_______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python