如何使用Matlab'从分类分布中获取随机样本;s兰德()?
我想根据简单的分类概率分布生成样本,例如如何使用Matlab'从分类分布中获取随机样本;s兰德()?,matlab,random,Matlab,Random,我想根据简单的分类概率分布生成样本,例如 p(A) = 0.1 p(B) = 0.5 p(C) = 0.25 p(D) = 0.15 使用rand(),它可以均匀地生成(0,1)中的样本,实现这一点的最佳方法是什么?您只需检查随机数是否小于每个类别的概率,按概率增加的顺序: value=rand() 如果值
p(A) = 0.1
p(B) = 0.5
p(C) = 0.25
p(D) = 0.15
使用rand(),它可以均匀地生成(0,1)中的样本,实现这一点的最佳方法是什么?您只需检查随机数是否小于每个类别的概率,按概率增加的顺序:
value=rand()
如果值
在不了解更多代码的情况下,我无法真正告诉您将它们整理好的最佳方法。如果您只有少数情况不会改变,那么像我上面所做的那样手动硬编码一次可能是最简单的
编辑:现在我想起来了,因为我们在累积概率,所以它们的顺序并不重要。我已经相应地调整了代码
编辑:我认为这基本上就是工作原理。您可以检查随机数是否小于每个类别的概率,按概率增加的顺序:
value=rand()
如果值
在不了解更多代码的情况下,我无法真正告诉您将它们整理好的最佳方法。如果您只有少数情况不会改变,那么像我上面所做的那样手动硬编码一次可能是最简单的
编辑:现在我想起来了,因为我们在累积概率,所以它们的顺序并不重要。我已经相应地调整了代码
编辑:我认为这基本上就是工作原理。可能重复的可能重复是的,基本上我不在循环中,并保持概率的“当前”和,一旦总和高于随机“值”,我选择了这个事件。是的,基本上我不在循环中并保持“当前”概率的总和,一旦总和高于随机“值”,我选择了这个事件。
value = rand()
if value < p(A)
return A
if value < p(A)+p(B)
return B
if value < p(A)+p(B)+P(C)
return C
else
return D