You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于中心极限定理从均匀随机数生成无阶乘泊松噪声?

基于均匀随机数的泊松噪声近似实现(中心极限定理应用)

1. 从均匀随机数近似生成高斯噪声

利用中心极限定理:多个独立同分布的均匀随机变量的和,会趋近于正态(高斯)分布。其中最实用的简化实现是使用12个[0,1)区间的均匀随机数,计算上无需额外开根号操作:

每个[0,1)均匀随机变量的均值为0.5,方差为1/12。12个这样的变量求和后,均值为6,方差为1。将求和结果减去6,就能得到近似标准正态分布(均值0,方差1)的随机数。再通过线性变换mu + z * sigma,即可得到任意均值mu、标准差sigma的高斯分布样本。

伪代码示例:

import random

def approx_gaussian(mu, sigma):
    # 用12个均匀随机数生成近似高斯样本
    sum_u = sum(random.uniform(0, 1) for _ in range(12))
    z = sum_u - 6  # 标准正态分布近似值
    return mu + z * sigma

这个方法计算高效,无需复杂运算,12个样本的近似度在大多数工程场景中足够使用;若需要更高精度,可增加均匀随机数的数量(如24个),近似效果会更接近真实高斯分布。

2. λ较小时用高斯噪声近似泊松噪声的优化方法

泊松分布的均值和方差均为λ,理论上可用高斯分布N(λ, λ)(均值λ,标准差sqrt(λ))近似,但λ较小时(通常λ<5),泊松分布是右偏的离散分布,而高斯是对称连续分布,直接近似误差较大,需通过以下修正优化:

核心修正技巧

  • 连续性修正:泊松变量是离散整数,高斯变量是连续值。为匹配两者的概率对应关系,生成高斯样本后,需将其调整为gauss_sample - 0.5再取整,让离散的泊松整数k对应高斯分布中[k-0.5, k+0.5)的区间概率。
  • 非负截断:泊松变量取值非负,但λ较小时高斯样本可能出现负值,需将所有负样本截断为0。

完整伪代码实现

import random
import math

def approx_poisson(lam):
    # 生成近似高斯N(lam, lam)的样本
    sum_u = sum(random.uniform(0, 1) for _ in range(12))
    z = sum_u - 6
    gauss_sample = lam + z * math.sqrt(lam)
    
    # 应用连续性修正+非负截断,得到泊松近似样本
    corrected = gauss_sample - 0.5
    poisson_sample = max(0, round(corrected))
    return poisson_sample

λ极小时的额外优化

当λ<0.5时,高斯近似的负样本概率会升高,此时可:

  • 增加生成高斯样本的均匀随机数数量(如24个),提升高斯分布的近似精度;
  • 结合泊松分布的可加性:将λ拆分为n个小值λ/n,分别生成每个小值的近似泊松样本后求和(每个小值的高斯近似误差更小)。

内容的提问来源于stack exchange,提问作者nishi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 23:40:21