多次调用np.random.multinomial的行为是什么?

时间:2020-05-31 18:59:27

标签: python numpy random random-seed

在调用时,np.random.multinomial和其他采样函数根据所选的概率分布给出一定数量的独立采样。例如,

np.random.multinomial(20, [1/6.]*6, size=2)

代表掷骰20次,然后再掷20次。

但是,如果您连续拨打np.random.multinomial(1, [1/6.]*6, size=1)一千次会怎样?我会得到一千个独立的模具卷,即np.random.multinomial是否能保证独立的样本并确保连续调用之间的正确分配?从经验上看,呼叫之间似乎存在一些重大关联。每次通话前重设np.random.RandomState更好吗?这似乎以某种方式是错误的。

1 个答案:

答案 0 :(得分:0)

无论如何,您可以尝试通过先从multinoulli (categorical) distribution进行采样,然后对其结果求和来进行20次(或N卷)。

排成一线(Python 3.7,x64,Anaconda Windows 10)

base64 decoder

上面用import numpy as np def mymultinomial(n: int, p): """Hand made multinomial""" q = np.random.multinomial(1, p, size=n) return np.sum(q, axis=0) 调用的代码将返回20个掷骰子的采样向量。您可以将结果与调用mymultinomial(20, 6*[1./6.])的结果进行比较,而我的快速测试没有统计差异。

您也可以通过np.random.multinomial(20, 6*[1./6.])进行采样,也可以对其进行测试(可能可以更快地进行矢量化处理)

choice()
相关问题