首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中使用np.random.multinomial()

在python中使用np.random.multinomial()
EN

Stack Overflow用户
提问于 2015-03-13 00:02:08
回答 2查看 7.4K关注 0票数 2

我有一个任务是从阿尔法列表a,b,c,d的总体中随机选择100个元素,相应的频率(概率)为0.1,0.3,0.2,0.4。有很多不同的方法可以做到这点。但在这里,我希望在此函数调用后返回的(假设有一个)是所选元素的数量的列表。比方说,它返回( 20 , 20 ,30,30),那么它意味着选择了20个元素a,选择了20个元素c,依此类推。我认为np.random.multinomial是可行的。按照上面的例子,我需要调用函数np.random.multinomial(100,0.1,0.3,0.2,0.4,1 )。是这样的吗?谢谢。

相关:fast way to uniformly remove 10% of all the elements in a given list of python

EN

回答 2

Stack Overflow用户

发布于 2015-03-13 00:11:06

是的,np.random.multinomial(100, [0.1,0.3,0.2,0.4], 1 )是正确的。但是由于您只做一次绘制,您可能更喜欢更简单的np.random.multinomial(100, [0.1,0.3,0.2,0.4]) (不带,1),它返回一个数组而不是一个数组的数组。

票数 0
EN

Stack Overflow用户

发布于 2020-03-04 23:16:23

我同意JulienD的观点。“选择”这个词和给定的概率并不在一起。

  • 当使用“选择”时,我们指的是没有顺序的排列。
  • 当使用给定的概率时,我们的意思是这些是恒定的概率(除非声明它是有条件的)。因此,这些项目被“分配”到具有给定概率的类别中。

当然,类别中的计数不是100*概率。从长远来看,这将是期望值。就像你抛出一枚公平的硬币,你不会期望它是HTHTHT...HT,但从长远来看,H的计数将是总抛出次数的一半。

代码语言:javascript
复制
import numpy.random as npr
npr.seed(123)
npr.multinomial(100, [0.1,0.3,0.2,0.4], 1)
# Out: array([[11, 27, 18, 44]])

随着模拟次数的增加,概率将收敛到给定的概率。

代码语言:javascript
复制
simulations = 1000
sum(npr.multinomial(100, [0.1,0.3,0.2,0.4], simulations))/simulations/100
#Out:array([ 0.09995,  0.29991,  0.19804,  0.4021 ])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29014620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档