擅长:python、mysql、java
<p>在对数域中计算组合函数和幂函数,然后将它们提升为指数。在</p>
<p>像这样:</p>
<pre><code>combination_num = range(k+1, n+1)
combination_den = range(1, n-k+1)
combination_log = np.log(combination_num).sum() - np.log(combination_den).sum()
p_k_log = k * np.log(p)
neg_p_K_log = (n - k) * np.log(1 - p)
p_log = combination_log + p_k_log + neg_p_K_log
probability = np.exp(p_log)
</code></pre>
<p>由于数字太大而导致数值下溢/溢出。在使用<code>n=450000</code>和<code>p = 0.5, k = 17</code>的示例中,它返回<code>p_log = -311728.4</code>,即,最终概率的日志非常小,因此在使用<code>np.exp</code>时发生下溢。但是,您仍然可以使用对数概率。在</p>