我正在尝试找出一种从归一化频率数组中采样索引的有效方法。从本质上讲,我有大量的数据,因此在表中存储数据是不可能的,每次出现一个元素(允许重复元素)。
作为一个小例子来说明我想要做的事情。假设我在Python中有以下数组:
freqs = [.2, .1, .1, .3, .3]
现在,我想要的基本上是能够产生一个整数,通过在0到4之间的采样值来索引到上面的数组中,该值遵循与每个索引位置相关的分布。也就是说,如果对100个索引进行采样,我希望其中20%的索引(平均)为0。
发布于 2018-07-16 05:57:05
你可以查看this answer来回答几乎相同的问题。
你只需要定义数字和它们的频率。
如果您使用的是python >= 3.6,则可以使用开箱即用的功能
from random import choices
indices = [1,2,3]
probs = [.3, .3, .4]
def get_rand_choice():
return choices(indices, probs)
https://stackoverflow.com/questions/51352247
复制相似问题