Solving probability problems with MATLAB

How can I simulate this question using MATLAB?
Out of 100 apples, 10 are rotten. We randomly choose 5 apples without replacement. What is the probability that there is at least one rotten?

回答 (3 件)

Walter Roberson
Walter Roberson 2022 年 12 月 15 日

1 投票

SampleSize = 100;
NumBad = 10;
NumTrials = 10000;
[~, randomized] = sort(rand(SampleSize, NumTrials), 1);
num_bad_in_first_five = sum(randomized(1:5,:) <= 10, 1);
bar(num_bad_in_first_five); title('number bad per trial')
counts = accumarray(num_bad_in_first_five.' + 1, 1, [6 1]);
bar(0:5, counts ./ NumTrials * 100); title('% of samples with exactly this many bad apples')
percent_with_at_least_one_bad = 100 - 100*(counts(1)/NumTrials)
percent_with_at_least_one_bad = 41.6200

2 件のコメント

Estela
Estela 2022 年 12 月 15 日
THANK YOU! Any way to use poisscdf/binocdf/normcdf somewhere in there?

サインインしてコメントする。

Paul Hoffrichter
Paul Hoffrichter 2020 年 12 月 16 日

0 投票

You can simulate this problem using a Monte Carlo Simluation.
Here's a probablity MATLAB video:
How to Make Predictions Using Monte Carlo Simulations
Pat Gipper
Pat Gipper 2020 年 12 月 18 日

0 投票

Here is my take using a for loop. I wouldn't mind seeing how it is done without using a for loop
%% MonteCarloBadApples.m
% Author: Pat Gipper
% Out of 100 apples, 10 are rotten. We randomly choose 5 apples without
% replacement. What is the probability that there is at least one rotten?
n=10000;% Start with 10,000 trials
x=[ones(1,10),zeros(1,90)];% 1st 10 apples are rotten, remaining 90 are OK
p=0;% Accumulator
%
for i=1:n
j=randperm(100);% Generate a random order of the indexes
y=x(j);% Randomly scatter the 10 rotten apples in the group of 100
z=sum(y(1:5))>0;% Is there a rotten apple in a group of 5?
p=p+z;% Increment the Monte-Carlo count for this trial if a bad apple turned up
end
p=p/n;% Calculate the probability from the n trials

3 件のコメント

Estela
Estela 2022 年 12 月 15 日
how would you plot the result?
Walter Roberson
Walter Roberson 2022 年 12 月 15 日
%% MonteCarloBadApples.m
% Author: Pat Gipper
% Out of 100 apples, 10 are rotten. We randomly choose 5 apples without
% replacement. What is the probability that there is at least one rotten?
n=10000;% Start with 10,000 trials
x=[ones(1,10),zeros(1,90)];% 1st 10 apples are rotten, remaining 90 are OK
p=0;% Accumulator
%
for i=1:n
j=randperm(100);% Generate a random order of the indexes
y=x(j);% Randomly scatter the 10 rotten apples in the group of 100
z=sum(y(1:5))>0;% Is there a rotten apple in a group of 5?
p=p+z;% Increment the Monte-Carlo count for this trial if a bad apple turned up
end
p=p/n;% Calculate the probability from the n trials
whos p
Name Size Bytes Class Attributes p 1x1 8 double
You can see that the result is a scalar. There is nothing useful to plot about a scalar.
Estela
Estela 2022 年 12 月 15 日
編集済み: Estela 2022 年 12 月 15 日
Any idea of a problem using Probability functions such as poisscdf,binocdf, normcdf example that I can plot? I am currentl ytrying to figure one out I would really appreciate the help!

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeGet Started with MATLAB についてさらに検索

製品

リリース

R2020b

タグ

質問済み:

2020 年 12 月 16 日

コメント済み:

2022 年 12 月 15 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by