Ili*_*ing 1 python random statistics performance
你有 5 个选择,你想从这 5 个选择中随机选择。您将如何直接获取每个选择的数字,而不是模拟该选择 10 亿次?
这是模拟:
choices = [0, 0, 0, 0, 0]
for i in range (int(1e9)):
choices[random.randint(0, 4)] += 1
Run Code Online (Sandbox Code Playgroud)
但这非常慢,我不知道如何获得更快的解决方案。
当然,您可以使用分布,通过构造将采样的整数添加到固定总和中。最简单的是多项分布
Python代码(未经测试)
import numpy as np
a = np.random.multinomial(1000000000, [1/5.]*5, size=1)
np.sum(a)
Run Code Online (Sandbox Code Playgroud)
另一种可能是狄利克雷多项分布