伯努利分佈及其matlab實現
伯努利分佈(the Bernoulli distribution)是一個離散型機率分佈,
為紀念瑞士科學家詹姆斯·伯努利(Jacob Bernoulli 或James Bernoulli)而命名。
當伯努利試驗成功,令伯努利隨機變數為1。若伯努利試驗失敗,令伯努利隨機變數為0。
其成功機率為p,失敗機率為q =1-p,在N次試驗後,其成功期望E(X)為p,方差D(X)為p(1-p)。
伯努利分佈又稱兩點分佈。
Overview
The binomial distribution models the total number of successes in repeated trials from an infinite population under the following conditions:
Only two outcomes are possible on each of n trials.
The probability of success for each trial is constant.
All trials are independent of each other.
Parameters
The binomial distribution uses the following parameters.
Parameter Description Support
N Number of trials positive integer
P Probability of success 0<=p<=1
Where the stochastic variable r(k)is a Bernoulli distributed white sequence with
prob{r(k)=1}=E{r(k)}=r
prob{r(k)=0}=1-E{r(k)}=1-r
已知 r=0.2 求高手幫忙解決 這個問題怎麼在matlab中表示? 謝謝
如何在MATLAB下構造伯努利矩陣?
2013-03-18 17:02kejunzhan2011|分類:數學|瀏覽850次
構造一個M*N的伯努利矩陣,其中每個元素隨機的取1或者-1,且取1和-1的概率各為1/2,這裡1/2並不是說一定有一半是1,一半是-1,就像拋硬幣一樣,正反面的概率都為1/2,但是拋10次的話也許有6次是正面,4次是反面。
是先構造一個N*N的伯努利矩陣,然後再隨機的從中選取M行,得到自己想要的M*N的矩陣。
分享到:
2013-03-18 17:12提問者採納
N = 10;
A = randint(N,N,[0 1]);
A(A==0) = -1;
M = 8;
B = A(1:M,:)
追問
最後一行的B=A(1:M,:);不符合要求啊,您這麼做的話就是取矩陣A的前8行,而我的要求是取矩陣A的隨機8行啊!!求指點。
回答
N = 10;
A = randint(N,N,[0 1]);
A(A==0) = -1;
M = 8;
%B = A(1:M,:)
% 在 N 行中隨機產生 2 行,刪除掉
B = A;
id = arrayfun(@(x) randint(1,1,[1 x]),N:-1:(M+1));
% 考慮到產生的隨機行有可能重複,所以用 for 迴圈
for k = 1:length(id)
B(id(k),:) = [];
end;
disp(B)
追問
我覺得這樣更簡單:
N = 10;
A = randint(N,N,[0 1]);
A(A==0) = -1;
M = 8;
B = zeros(M,N);
index=randperm(N);
for i=1:M
B(i,:)=A(index(i),:);
end
您看還行?
回答
是的可行。不過取出的永遠是 A 的 1-8 行,只是把順序打亂了。
提問者評價
原來是這樣,感謝!