<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2016-04-30 17:28 GMT+02:00 Francesca Senatore <span dir="ltr"><<a href="mailto:francesca.senatore1983@gmail.com" target="_blank">francesca.senatore1983@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Ciao ragazzi, <div>vi ringrazio per i vostri consigli. Scusate se rispondo solo ora ma causa influenza sono costretta a letto.</div><div><br></div><div>Avete ragione! Non credo di essermi spiegata molto bene. Cerco di spiegarmi meglio dicendovi cosa esattamente devo fare. Io voglio simulare una distribuzione di exposures (a e b sono secondi di osservazione da 5.6e3 a 2.5e6 secondi).  La distribuzione che devo simulare è fatta in questo modo: </div><div><br></div><div>l' 88.5% delle exposures cade nell'intervallo [2.5e6,1e5]</div><div>il 9.5% delle exposure cade nell'intervallo [1e5,2.5e4]</div><div>0.7% delle exposures cade nell'intervallo [2.5e4,1.1e4]</div><div>1.4% delle exposures cade nell'intervallo [1.1e4,6.3e3]</div></div></blockquote><div><br></div><div>Allora rv_discrete e random.choice non fanno al tuo caso. Quello che potresti fare e` invece interpolare la tua cdf per poterla invertire, ed utilizzarla poi per trasformare i campioni estratti da una distribuzione uniforme. La procedura si chiama inverse transform sampling, e.g. [1]. <br>Di seguito un esempio.<br></div><div><br>from scipy.interpolate import interp1d<br>import numpy as np<br><br>n_samples = 1e4<br><br>px = [2.5e6, 1e5, 2.5e4, 1.1e4, 6.3e3]<br>py = [0.885, 0.095, 0.07, 0.014, 0]<br><br>py = py / np.sum(py)<br><br>cdf_x = np.flipud(px)<br>cdf_y = np.cumsum(np.flipud(py))<br><br>inv_cdf = interp1d(cdf_y, cdf_x, bounds_error=False, assume_sorted=True)<br>r = np.random.uniform(0, 1, n_samples)<br>ys = inv_cdf(r)<br><br>for b, a, nom in zip(px[:-1], px[1:], py):<br>    obs = np.sum((ys < b) & (ys > a)) / len(ys)<br>    print('observed: %.3f - nominal: %.3f' % (obs, nom))<br><br><br>[1] <a href="http://www.nehalemlabs.net/prototype/blog/2013/12/16/how-to-do-inverse-transformation-sampling-in-scipy-and-numpy/">http://www.nehalemlabs.net/prototype/blog/2013/12/16/how-to-do-inverse-transformation-sampling-in-scipy-and-numpy/</a> <br><br></div><div>Ciao,<br></div><div>L<br></div></div></div></div>