3

ステップ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 になります。

4

2 に答える 2