ステップ1:
値 -1 または 1 を取る離散一様乱数を生成したいとしましょう。つまり、次の分布を持つ数値を生成したいとします。
P(X = -1) = 0.5
P(X = 1) = 0.5
これらの数値の 100 個の配列を生成するには、次のコードを記述できます。
n = 100
DV = [-1,1]; % Discrete value
RI = unidrnd(2,n,1); % Random uniform index
DUD = DV(RI); % Discrete uniform distribution
私の DUD 配列は次のようになります。[-1,1,1,1,-1,-1,1,-1,...]
ステップ2:
ここで、 に等しい 10 個の数を生成したいsum(DUD)
ので、10 個の数は、離散一様分布に従う 100 個の数の合計に対応する分布を持ちます。
もちろん、私はそれを行うことができます:
for ii = 1:10
n = 100;
DV = [-1,1]; % Discrete value
RI = unidrnd(2,n,1); % Random index
DUD = DV(RI); % Discrete uniform distribution
SDUD(ii) = sum(DUD);
end
と
SDUD =
2 2 -6 -2 -4 2 4 4 0 2
それを行うための数学/matlabのトリックはありますか? for ループを使用せずに。
SDUD のヒストグラム (値が 10000、n=100) は次のようになります。
ボーナス:
元の離散値を変更できれば素晴らしいことです。したがって、[-1,1] の代わりに、離散値は [0,1,2] のようになり、それぞれの出現回数は p = 1/number_of_discrete_value なので、この例では 1/3 になります。