Matlab - Gra Hazardowa

Symulacja gry hazardowej (obstawianie aby dojsc do pewnej sumy)

disp('Symulacja gry "Gambling Table"');

game = input('Wybierz stol: 
 (1)-rzuty moneta (2)-rzuty kostka --> ');
taktyka = input('Grasz zachlannie(1) 
  czy ostroznie (2)           --> ');

  min = 1;
max = input('Na wstepie masz 1 zloty 
  ile chcesz wygrac       --> ');
trials = input('Dla ilu prob 
  przeprowadzamy symulacje           --> ');

tnows = 0; %total number of win steps 
  (sum from each interation-step)
tnols = 0; %total number of loses steps 
  (sum from each interation-step)
tnow = 0; %total number of wins 
tnol = 0; %total number of loses
if (game == 1)
	if (taktyka == 1) 
		for i=1:trials
			[win,steps] = zachlanna(min,max,0.5);
			if (win == 1)
				tnow = tnow + 1;
				tnows = tnows + steps;
			elseif (win == 0)
				tnol = tnol + 1;
				tnols = tnols + steps;
			end
		end
	elseif(taktyka == 2)
		for i=1:trials
			[win,steps] = ostrozna(min,max,0.5);            
			if (win == 1)
				tnow = tnow + 1;
				tnows = tnows + steps;
			elseif (win == 0)
				tnol = tnol + 1;
				tnols = tnols + steps;
			end
		end
	end
elseif (game == 2)
	if (taktyka == 1)
		for i=1:trials
			[win,steps] = zachlanna(min,max,0.83333333);
			if (win == 1)
				tnow = tnow + 1;
				tnows = tnows + steps;
			elseif (win == 0)
				tnol = tnol + 1;
				tnols = tnols + steps;
			end
		end
	elseif (taktyka == 2)
		for i=1:trials
			[win,steps] = ostrozna(min,max,0.83333333);            
			if (win == 1)
				tnow = tnow + 1;
				tnows = tnows + steps;
			elseif(win == 0)
				tnol = tnol + 1;
				tnols = tnols + steps;
			end
		end
	end
end
format long
disp('Wygranych bylo: (w procentach)'); disp(100*tnow/trials);
disp('Dla sredniej liczby krokow rownej'); disp(tnows/tnow);
disp('Przegranych bylo: (w procentach)'); disp(100*tnol/trials);
disp('Dla sredniej liczby krokow rownej'); disp(tnols/tnol);
format short
clear

% zachlanna.m

function [wygral,kroki] = zachlanna(min,max,pp); %(pp) to poziom przejscia
	rezultat = min;
	kroki = 0;
	while ((rezultat < max) & (rezultat >= min))
		kroki = kroki + 1;
		los = rand(1);
		if (los >= pp)
			if (rezultat < max) 
				rezultat = rezultat *2;
			end
		else
			if (rezultat < ceil(max/2)) 
				rezultat = min - 1;
			else
				rezultat = 2 * rezultat - max;
			end
		end
	end
	if (rezultat >= max ) 
		wygral = 1;
	elseif (rezultat < min) 
		wygral = 0;
	end
end
% ostrozna.m
function [wygral,kroki] = ostrozna(min,max,pp); %(pp) to poziom przejscia
	rezultat=min;
	kroki=0;
	while ((rezultat < max) & (rezultat >= min))
		kroki = kroki + 1;
		los = rand(1);
		if (los >= pp)
			rezultat = rezultat + 1;
		else
			rezultat = rezultat - 1;
		end
	end
	if (rezultat >= max ) 
		wygral = 1;
	elseif (rezultat < min) 
		wygral = 0;
	end
end

2012.11.22 22:29:17.