Matlab:从分发中采样

时间:2013-03-28 02:41:36

标签: matlab distribution

我需要一些关于从MATLAB中的给定分布中获取样本的帮助。假设我有5个箱和相应的概率,这些箱可能产生样本。

例如,我可能有.1,.2,.4,.2,.1作为对应于5个区间的概率 - (0-19),(20-39),(40-59),( 60-79),(80-99)。

1 个答案:

答案 0 :(得分:1)

如果您知道概率,那么您想要做的是让每个bin占据其在数字线上的概率的比例空间,然后从该数字线中选择一个随机数(来自平坦分布)。

简单的例子:想想两个箱子,一个是40%,另一个是60%。从0到1选择一个随机数,如果是.40或更低,你可以说它从bin1“被拉”。如果超过.40“被从bin2拉出来。

这是一个糟糕的黑客,但如果你找不到任何优雅的东西......

 a = .1
 b = .2 + a
 c = .4 + b
 d = .2 + c
 e = .1 + d %cumulative probabilities (i.e. cdf)
 random = Random() %from 0 to 1 %pick random number
 if( 0 < random < = a) => bin1
 if( a < random < = b) => bin2
 if( b < random < = c) => bin3
 if( c < random <= d) => bin4
 if( d <= random) => bin5