Clear Filters
Clear Filters

Monte Carlo Simulation (chutes and ladders)

4 views (last 30 days)
E
E on 25 Oct 2013
Answered: arushi on 29 Aug 2024 at 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

Answers (1)

arushi
arushi on 29 Aug 2024 at 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.

Categories

Find more on Board games in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!