点K必须从可能的点中选出,K是一个已知概率分布的随机变量。由于此分布,我想选择其中一个点...我该怎么做?
例如:点数:3 5 6 8 概率:0.2 0.4 0.1 0.3
由于概率,我想选择其中一个点。
点K必须从可能的点中选出,K是一个已知概率分布的随机变量。由于此分布,我想选择其中一个点...我该怎么做?
例如:点数:3 5 6 8 概率:0.2 0.4 0.1 0.3
由于概率,我想选择其中一个点。
使用rand
在范围内生成一个随机数[0.0, 1.0)
。如果它在[0.0,0.2)
select3
中,如果随机数在[0.2,0.6)
select5
中,等等等等。
我不会为您提供确切的函数,但是,使用下面提供的代码应该非常容易将其包装到函数中。
该解决方案基于 Marks 原始评论,但用于cumsum()
使实现更容易一些。
%# Set up point labels and probabilities (input parameters to function)
labels = [3 5 6 8];
probabilities = [0.2 0.4 0.1 0.3];
%#Find cumulative distribution
cp = [0 cumsum(probabilities)];
%#Draw point at random according to probability density
draw = rand();
higher = find(cp >= draw==1,1);
drawnPoint = labels(higher-1); %# Output result from function