what is the probability that when three dice are rolled, at least two of the dice have the same value? what is the probability that the value of the third dice roll is strictly between the values of the first two rolls? use simulation to estimate

8 次查看(过去 30 天)
I know for sure that I am going to use rand() to simulate the throws but how do I compute the probilities?
  6 个评论
Matthew Crema
Matthew Crema 2013-10-8
编辑:Matthew Crema 2013-10-8
I meant (lowercase) n.
So to get the simulation to work try:
n = 100000;
x = randi(6,n,1); % Value of the first dice
y = randi(6,n,1); % Value of the second dice
z = randi(6,n,1); % Value of the third dice
% Simulating throws
count1 = 0; % Count the number of times condition 1 occurs
for k = 1:n
if (x(k) == y(k)) || (y(k)==z(k)) || (x(k)==z(k))
count1 = count1 + 1;
end
end
fprintf('Condition 1 occured %d times ', count1)
fprintf('Out of %d throws\n', n)
fprintf('So according to this simulation, the probability is %.3f\n', count1./n)
Try it for a small value of "n". Then try it for a larger value of "n" to get a "feel" for the computational technique.
As far as your other question "how to solve it analytically" you are close. Do you know why? What you are doing is counting all possible outcomes of throwing 3 dice and putting that number (216) in the denominator. Then figure out how many of these possible outcomes have condition 1 satisfied (and put that number in the numerator). There are lots of methods for counting large numbers (factorials, permutations and combinations) that are not intuitive, but for this (relatively) small problem, it may be worth your time to draw a "tree" diagram to (again) get a "feel" for the analytical method and circle all outcomes where two or more dice have the same value.
Hope this helps.

请先登录,再进行评论。

回答(3 个)

James Tursa
James Tursa 2013-10-8
编辑:James Tursa 2013-10-8
You made a good first effort, so I will help you out.
First, rand produces a uniform distribution, not integers, so you need to adjust your x, y, and z formulas to turn them into integers with equal probabilities:
x = floor(1 + 6*rand(n,1));
etc.
Or look at randi as Walter has suggested.
As you have coded it, this condition only covers two of the possibilities:
if x(k)== y(k)|| y(k)==z(k)
But what about if the first value matches the third value? That is not covered by your test, so you should modify it to account for this possibility.
Also, this condition you have coded isn't quite correct:
if x(k) < z(k) && z(k) > y(k)
Plug in some sample values and you will see what I mean. Remember you will need to cover the case where x(k) is less than y(k) and also the case where x(k) is greater than y(k).
As to your general question of how to calculate probabilities, you simply count the number of successes and divide that by the number of trials. E.g., start two counters, one for the first test and one for the second test, at the front of your code before you enter the loops:
P = 0;
Q = 0;
Then, inside the first if test do P = P + 1, and inside the second if test do Q = Q + 1;
At the end of your code you can then do this to get the probabilities:
P = P / n; % probability of first condition being true
Q = Q / n; % probability of second condition being true

Ken Atwell
Ken Atwell 2013-10-8

Youssef  Khmou
Youssef Khmou 2013-10-9
编辑:Youssef Khmou 2013-10-9
i want add one concept, you want to compute a certain probability of dice over N times, throw N dices one time and compute, there is specified term for this concept, anyone?
  3 个评论

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by