【发布时间】:2011-09-19 22:09:13
【问题描述】:
给定一个元组列表,其中每个元组包含一个概率和一个项目,我想根据其概率对一个项目进行抽样。例如,给出列表 [ (.3, 'a'), (.4, 'b'), (.3, 'c')] 我想在 40% 的时间内对 'b' 进行采样。
在 python 中执行此操作的规范方法是什么?
我查看了 random 模块,它似乎没有适当的功能,并且在 numpy.random 中,虽然它具有多项式函数,但似乎并没有以一种很好的形式返回这个问题的结果。我基本上是在 matlab 中寻找类似 mnrnd 的东西。
非常感谢。
感谢您这么快给出所有答案。澄清一下,我不是在寻找如何编写采样方案的解释,而是指出一种简单的方法来从给定一组对象和权重的多项分布中采样,或者被告知不存在这样的函数在标准库中,所以应该自己编写。
【问题讨论】:
-
这个之前已经介绍过了。这是我自己的看法:stackoverflow.com/questions/3655430/…
-
numpy.random.multniomial 是 mnrnd。更具体地说,您是否想要一个顺序不重要的列表,例如 [a,a,a,b,b,b,b,c,c,c] 或具有伪随机顺序的分布。
-
顺便说一下,这叫categorical distribution。
标签: python statistics numpy probability random-sample