フィルターのクリア

Monte Carlo Simulation (chutes and ladders)

3 ビュー (過去 30 日間)
E
E 2013 年 10 月 25 日
回答済み: arushi 2024 年 8 月 29 日
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 日
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 Center および File ExchangeJust for fun についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by