【发布时间】:2018-12-31 20:49:06
【问题描述】:
如果不同的元素应该有不同的概率,numpy.random.choice 方法可以生成一个随机样本而无需替换。但是,当我用
测试它时import numpy
a = [0, 1, 2, 3, 4, 5]
p = [0.1, 0.3, 0.3, 0.1, 0.1, 0.1]
result = [0, 0, 0, 0, 0, 0]
N = 1000000
k = 3
for i in range(0, N):
temp = numpy.random.choice(a, k, False, p)
for j in temp:
result[j] += 1
for i in range(0, 6):
result[i] /= (N * k)
print(result)
第二个和第三个元素只出现了 25% 的时间,相差很多。我尝试了不同的概率分布(例如,[0.1, 0.2, 0.3, 0.1, 0.1, 0.2]),每次结果都不符合预期。我的代码有问题还是 numpy 真的那么不准确?
【问题讨论】:
-
对
replace=True函数使用replace=True选项。 -
看看
sorted(np.random.choice(list(range(10)), 10, replace=False))。它将永远是[0,1,2,3,4,5,6,7,8,9]。将False更改为True和/或将第二个10更改为11以获得更多洞察力。