我需要一些关于从 MATLAB 中的给定分布中获取样本的帮助。假设我有 5 个 bin 和这些 bin 可能产生样本的相应概率。
例如,我可能有 .1, .2, .4, .2, .1 作为与 5 个 bin 对应的概率 - (0-19),(20-39),(40-59), (60-79 ),(80-99)。
我需要一些关于从 MATLAB 中的给定分布中获取样本的帮助。假设我有 5 个 bin 和这些 bin 可能产生样本的相应概率。
例如,我可能有 .1, .2, .4, .2, .1 作为与 5 个 bin 对应的概率 - (0-19),(20-39),(40-59), (60-79 ),(80-99)。
如果您知道概率,您要做的是让每个 bin 在数轴上占据与其概率成比例的空间,然后从该数轴中选择一个随机数(从平面分布中)。
简单的例子:想想两个箱子,一个有 40%,另一个有 60%。选择一个从 0 到 1 的随机数,如果是 0.40 或更低,则可以说它是从 bin1 中“拉出”的。如果高于 0.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