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

Python如何生成x从0开始计数的几何分布随机样本

0起始几何分布采样实现方案

两种几何分布仅存在计数偏移,核心概率逻辑完全一致:

  • numpy.random.geometric 生成的是首次成功时的总试验次数,取值域为1,2,3...,对应PMF为 $P(X=k) = p(1-p)^{k-1}$
  • 你需要的是首次成功前的失败次数,取值域为0,1,2...,对应PMF为 $P(Y=k) = p(1-p)^{k}$

方案1:直接偏移numpy生成结果(推荐,无额外依赖)

两个随机变量满足 $Y = X - 1$,直接对numpy的采样结果减1即可,统计特性完全匹配目标分布:

import numpy as np

p = 0.3
# 生成100个符合要求的0起始几何分布样本
samples = np.random.geometric(p=0.3, size=100) - 1

校验:原分布取1的概率为p,偏移后对应取值0的概率p;原分布取k的概率为$p(1-p){k-1}$,偏移后对应取值k-1的概率$p(1-p){(k-1)}$,和目标PMF完全吻合。

方案2:Scipy内置参数调整实现

如果你的项目已经依赖Scipy,可以直接通过loc参数平移分布实现,不需要手动做减法:

from scipy.stats import geom

p = 0.3
samples = geom.rvs(p=0.3, loc=-1, size=100)

注意事项

  • 不推荐手写逆变换采样逻辑,numpy、Scipy的内置实现经过充分性能优化,大样本量下速度远快于手写Python循环。
  • 两种方案生成的样本分布完全一致,优先选不需要额外安装依赖的偏移法即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:39:16