擅长:python、mysql、java
<p>假设您经常调用<code>onetrial</code>,请首先计算<a href="http://en.wikipedia.org/wiki/Cumulative_distribution_function" rel="nofollow">CDF</a>,使其更快:</p>
<pre><code>from random import uniform
vals = [11, 23, 39]
prob = [0.25, 0.30, 0.45]
cdf = [sum(prob[0:i+1]) for i in xrange(3)]
def onetrial(vals, cdf):
u = uniform(0, 1)
for i in range(3):
if u <= cdf[i]:
return vals[i]
</code></pre>
<p>您可以使用<a href="http://docs.python.org/library/bisect.html" rel="nofollow">bisect</a>使其更快。在</p>