Monte Carlo Simulation (chutes and ladders)

4 次查看(过去 30 天)
E
E 2013-10-25
回答: arushi 2024-8-29,5:34
I'm trying to work a monte carlo simulation for a chutes and ladders game. The board is nine squares. You can only roll a 1 or a 2. If you land on square 3, you are laddered to square 6. if you land on square 8, you chute down to square 2. If you land on square 9, you win the game. I'm trying to determine the average number of rolls it takes to win the game. We are required to run this simulation several times to see if the average changes based on how many times you run the simulation. This is what I have so far. Any help is appreciated.
n=5;
for t=1:n
pos=0;
move=0;
while pos(t)<9
roll(t)=round(a+(b-a).*rand(1));
pos(t)=pos(t)+roll(t);
if pos(t)=3
then pos(t)=6
end
if pos(t)=8
then pos(t)=2
end
move(t)=move(t)+1;
end
end

回答(1 个)

arushi
arushi 2024-8-29,5:34
Hi E,
Below is a corrected version of your code:
% Parameters
num_simulations = 5; % Number of simulations to run
results = zeros(1, num_simulations); % Array to store results of each simulation
% Simulation loop
for t = 1:num_simulations
pos = 0; % Starting position
move = 0; % Move counter
% Play until the player wins
while pos < 9
% Roll a 1 or 2
roll = randi([1, 2]); % Random integer between 1 and 2
pos = pos + roll; % Update position
% Check for ladder and chute
if pos == 3
pos = 6; % Ladder from 3 to 6
elseif pos == 8
pos = 2; % Chute from 8 to 2
end
% Increment move counter
move = move + 1;
end
% Store the number of moves for this simulation
results(t) = move;
end
% Calculate the average number of rolls
average_moves = mean(results);
% Display the results
fprintf('Average number of rolls to win: %.2f\n', average_moves);
Hope this helps.

类别

Help CenterFile Exchange 中查找有关 Board games 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by