numpy.random.choice 与替换等同于单次试验的多项式抽样吗?

Is numpy.random.choice with replacement equivalent to multinomial sampling for a single trial?

我理解严格来说,它们是不同的。但是在 numpy.random.multinomial 的单个试验(或实验)中,它的采样方式是否与 numpy.random.choice 相同,尽管给出了不同的输出视图?

例如:

>> np.random.choice(6, size=6, replace=True, p=[1/6.]*6)
>> array([2, 0, 4, 2, 5, 4])

输出给出了在数组中选取的内容的标识 [0,1,2,3,4,5]

>> np.random.multinomial(1, [1/6.]*6, size=6)
>> array([[0, 0, 1, 0, 0, 0],
          [0, 0, 0, 0, 0, 1],
          [0, 0, 0, 1, 0, 0],
          [0, 0, 0, 1, 0, 0],
          [0, 0, 0, 0, 1, 0],
          [1, 0, 0, 0, 0, 0]])

输出给出每个选项被选中的次数,但由于它仅限于 1 次试验,因此也可以从选项 [0,1,2,3,4,5]

中总结为 [2,5,3,3,4,1]

是的,它们实际上是一样的。

是的,但是 multinomial 更快。

$ python -m timeit 'import numpy as np' 'np.nonzero(np.random.multinomial(1, [1/6.]*6, size=6))[1]'
50000 loops, best of 5: 4.84 usec per loop
$ python -m timeit 'import numpy as np' 'np.random.choice(6, size=6, replace=True, p=[1/6.]*6)'
20000 loops, best of 5: 15.9 usec per loop