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

无需模拟:如何直接生成和为10亿的5个等概率随机计数?

高效计算多选项随机选择次数的方案

你的问题本质是多项分布采样:10亿次独立试验,每次从5个等概率选项中选一个,直接用统计方法生成结果即可,完全不需要逐次模拟。

两种高效方案

1. 生成符合随机分布的实际结果

用Python的numpy库内置的multinomial函数,底层基于C实现向量化运算,瞬间完成计算:

import numpy as np

total_trials = int(1e9)
# 5个选项的选中概率均等,各为0.2
probabilities = [0.2] * 5
# 直接生成10亿次试验后各选项的选中次数
choices = np.random.multinomial(total_trials, probabilities)
print(choices)

2. 直接获取理论期望结果

如果不需要随机波动的实际采样值,仅需理论平均次数,每个选项的选中次数为总次数乘以单个选项的概率:

total_trials = int(1e9)
single_count = total_trials // 5
choices = [single_count] * 5
# 若总次数无法被选项数整除,可将余数随机分配给其中几个选项
# 比如:
# remainder = total_trials % 5
# for i in range(remainder):
#     choices[i] += 1
print(choices)

为什么比原方法高效

原代码在Python层面循环10亿次,每次都要调用随机函数并更新数组,耗时极长;而上述方案要么利用底层优化的统计库直接生成结果,要么仅做简单算术运算,时间复杂度从O(N)降到O(1),效率提升几个数量级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:37:07