Rolling a Fair 6-Sided Die Until Two Consecutive Rolls Have the Same Value

1 visualización (últimos 30 días)
My task is to simulate rolling a fair 6-sided die until two consecutive rolls have the same value and write a function that approximates the expected value EV. I believe I have most of the program figured out until I reach 'same number' in which I get lost. Please help me find out what to put in place of 'same number' to get my program to work. Here is my block of code:
function EV = hw20(NTrials)
%
%
rng('shuffle)
TotalNRolls = 0;
for Trial = 1:NTrials
die = randi(6);
TotalNRolls = TotalNRolls + 1;
while die == 'same number'
TotalNRolls = TotalNRolls + 1;
end
end
EV = TotalNRolls/NTrials;

Respuestas (2)

Ameer Hamza
Ameer Hamza el 2 de Oct. de 2020
Editada: Ameer Hamza el 2 de Oct. de 2020
Try this code
function EV = hw20(NTrials)
%
%
rng('shuffle')
TotalNRolls = 1;
last_die = inf; % any number other then 1 to 6
while true
die = randi(6);
if die == last_die || TotalNRolls==NTrials
break;
else
last_die = die;
end
TotalNRolls = TotalNRolls + 1;
end
EV = TotalNRolls/NTrials;
end
  3 comentarios
Ameer Hamza
Ameer Hamza el 2 de Oct. de 2020
Thanks, Steven. Your approach also makes sense for this problem. It is just my guess that NTrials is the maximum number of trials.
Sophie Culhane
Sophie Culhane el 5 de Oct. de 2020
We have not yet learned 'break' therefore I cannot use that in my program. Thank you for the responses so far.

Iniciar sesión para comentar.


Alan Stevens
Alan Stevens el 2 de Oct. de 2020
I think the above will produce a probability, rather than an expected value. Try
NTrials = 1000;
N = zeros(NTrials,1);
for Trial = 1:NTrials
TotalNRolls = 1;
die = randi(6);
keepgoing = true;
while keepgoing == true
oldie = die;
die = randi(6);
if die == oldie
keepgoing = false;
end
TotalNRolls = TotalNRolls + 1;
end
N(Trial) = TotalNRolls;
end
EV = sum(N)/NTrials;

Categorías

Más información sobre Operating on Diagonal Matrices en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by