2017-09-12 12 views
-1

確率質量関数が与えられたときにコンピュータプログラムを書く必要があります。 {pj、j = 1 ,. 。 。 、n}を入力として、この質量関数を有する変数 の値を出力として与える。それらは私の唯一の問題に関する情報です。私はこれを試しましたMatlabの特定の質量関数を使用したランダム変数生成

%f(x)=pdf 
%F(x)=cdf 
%X=tixaia metavliti 

f(x); 
X; 
F(x)= cumsum(f(x)); 

%firstly we want F(x) to have unique values 
%we remove the non-unique values from cdf and X 
[F(x),mask] = unique(F(x)); 
X = X(mask); 

%apply inverse interpolation 
%so we can produce random value X from the cdf 

u = rand; 

projection = interp1(F(x),X,u); 

私の問題の解決策に近いですか?誰でも助けてくれますか?

+0

あなたは何を意味するかを明確にしようとしています。あなたは任意のpmfを与えられ、そこからN個のデータポイントをサンプリングして(置き換えずに)、そのpmfに従うN個の観測の無作為サンプルを効果的に生成するように求められましたか? –

+0

@TasosPapastylianouはい、そうです。私は以前にMalabを使用したことはありません。私はそれにあまり慣れていません。何とか私を助けることができますか? –

+0

あなたのためにコードを書いてもらうように頼んでいるのは、そうではありません(批判していない、それはまさにそれです)。しかしここに出発点があります:http://matlabtricks.com/post-44/generate-random-numbers-with-a-given-distribution累積分布関数とそれからの逆変換を得る「技法」を理解しようとします。最初。次に、あなた自身のコードを書こうとします。あなたが書いた特定のコードに問題がある場合、SOコミュニティは通常その時点で喜んで手助けします。 –

答えて

1

ここでは、定義された確率に基づいてベクトル(7 8 9 10)から2つの値をサンプリングする例を示します。それは統計ツールボックスを使用します。

 

    R = randsample([7 8 9 10],2,true,[0.15 0.35 0.35 0.15]) 

自分でコードを作成したい場合は、Tasosが正しいリンクを指示しました。

関連する問題