擅长:python、mysql、java
<p>假设每个列表元素的选择与否是一个概率为<code>prob</code>的独立事件,选择的项目数是一个参数为<code>len(m)</code>和<code>prob</code>的二项式随机变量。这种随机变量的期望值是<code>prob * len(m)</code>。你知道吗</p>
<p>如果你想模拟这个随机变量(而不是计算它的期望值),你可以使用:</p>
<pre><code>import random
def binomial_variate(n,p):
return sum(random.random() < p for _ in range(n))
</code></pre>
<p>例如</p>
<pre><code>>>> trials = [binomial_variate(20,0.12) for _ in range(100)]
>>> trials
[5, 6, 2, 1, 2, 4, 3, 3, 2, 3, 4, 1, 3, 2, 2, 3, 1, 0, 2, 4, 6, 1, 1, 2, 2, 3, 4, 2, 2, 1, 2, 1, 3, 4, 2, 3, 2, 2, 4, 4, 5, 1, 1, 1, 1, 2, 2, 3, 2, 2, 5, 4, 4, 1, 4, 4, 3, 5, 2, 3, 2, 4, 3, 4, 4, 2, 2, 1, 2, 1, 2, 1, 3, 0, 4, 3, 2, 4, 1, 2, 1, 2, 3, 2, 2, 3, 2, 1, 4, 4, 2, 2, 2, 2, 2, 3, 3, 3, 4, 2]
>>> sum(trials)/100
2.55
>>> 20*0.12
2.4
</code></pre>