1. 程式人生 > 實用技巧 >伯努利分佈及其matlab實現

伯努利分佈及其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 行,只是把順序打亂了。

提問者評價

原來是這樣,感謝!