ポイントKは、可能なポイントから選択する必要があります。Kは、既知の確率分布を持つ確率変数です。この分布のためにポイントの1つを選択したい...どうすればそれを行うことができますか?
例:ポイント:3 5 6 8確率:0.2 0.4 0.1 0.3
その確率からポイントを一つ選びたいと思います。
ポイントKは、可能なポイントから選択する必要があります。Kは、既知の確率分布を持つ確率変数です。この分布のためにポイントの1つを選択したい...どうすればそれを行うことができますか?
例:ポイント:3 5 6 8確率:0.2 0.4 0.1 0.3
その確率からポイントを一つ選びたいと思います。
を使用rand
して、範囲内の乱数を生成します[0.0, 1.0)
。[0.0,0.2)
select3
にある場合、乱数がselect[0.2,0.6)
にある場合5
、など。
正確な関数については説明しませんが、以下に示すコードを使用すると、関数に非常に簡単にラップできるはずです。
このソリューションは、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