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

是否存在NumPy函数可对多组概率进行随机采样?

向量化实现按对应概率生成0-1数组

你可以直接用numpy的随机数生成+元素级比较来实现完全向量化的采样,比循环调用np.random.choice效率高得多:

核心思路

生成和概率数组长度相同的[0,1)区间随机数,每个随机数如果小于对应位置的概率值p[i],就输出1,否则输出0。

代码实现

import numpy as np

p = [0.5, 0.9, 0.1, 0.4]
# 生成向量化采样结果
result = (np.random.rand(len(p)) < p).astype(int)

解释

  • np.random.rand(len(p)):生成和p长度一致的数组,每个元素是0到1之间的均匀分布随机数
  • < p:元素级比较,得到布尔数组(True对应采样到1,False对应0)
  • .astype(int):把布尔值转成整数0和1

这种方法完全是向量化操作,避免了循环,比逐个调用np.random.choice的效率高很多,尤其当p的长度很大时优势更明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:15:47