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

numpy中np.random.binomial函数工作原理及参数用法疑问

关于numpy.random.binomial的两个问题解答

第一个代码是否满足你的需求?

你写的代码:

print(np.random.binomial(n = 1, [0.1,0.9]))

这里numpy会把第二个未命名参数识别为p。这段代码实际是做两次独立的伯努利试验(n=1的二项分布就是伯努利分布):

  • 第一次试验:成功概率0.1,输出0(失败)或1(成功)
  • 第二次试验:成功概率0.9,输出0或1

所以输出是一个长度为2的数组(比如[0, 1]),并不是单个符合“1出现概率10%、0出现概率90%”的值。

如果要生成单个满足需求的值,应该写成:

print(np.random.binomial(n=1, p=0.1))

每次运行这个代码,会输出0或1,其中1的出现概率是10%,0是90%。

第二个代码的分布与可能结果

代码:

print(np.random.binomial(n = 2, p = [0.1,0.5,0.4]))

这里p是包含3个概率值的数组,numpy会针对每个p值独立执行一次n=2的二项试验,最终输出一个长度为3的数组,每个元素对应一次试验的结果:

  • 每个n=2的二项试验,代表做2次独立的伯努利试验,统计成功的次数,所以每个试验的可能结果确实是0、1、2
  • 三个试验各自的概率分布如下:
    • p=0.1时:P(0)=0.9²=0.81,P(1)=2×0.1×0.9=0.18,P(2)=0.1²=0.01
    • p=0.5时:P(0)=0.5²=0.25,P(1)=2×0.5×0.5=0.5,P(2)=0.5²=0.25
    • p=0.4时:P(0)=0.6²=0.36,P(1)=2×0.4×0.6=0.48,P(2)=0.4²=0.16

举个例子,运行一次可能得到[0, 1, 2],三个元素分别对应三次试验的成功次数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 17:07:23