function stat_monopol(N_prove,lanci_dadi,azione); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Programma per determinare la casistica di accesso ai vari terreni % %% del gioco da tavolo MONOPOLI (Editrice Giochi) % %% Scritto da Fabio Blasizzo ciubexx@inwind.it il 03/10/1999 % %% homepage: http://www.geocities.com/blasizzo/fabio/fabio.html % %% % %% >>> ANALISI STATISTICA <<< % %% % %% NOME FILE: stat_monopol.m % %% SINTASSI : stat_monopol.m(N_prove,lanci_dadi,azione) % %% con: N_prove = 1 , infinio [~10.000] % %% lanci_dadi = 1 , infinito [~100] % %% azione = 1 pago subito % %% 2 pago al 2°turno % %% 3 pago al 3°turno % %% versione 8 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% t=clock; % inizio del tempo di conteggio carcere = 10; %================================= INIZIO PROVE =========================================== for game = 1 : N_prove; % ciclo for principale TABELLA(:,game) = zeros(40,1); % Inizializzo la colonna 'accessi' dove_sono = 40 ; % Sono la VIA fuori = 1; % non sono in carcere % -------------------------------- lancio dadi -------------------------------------------- uscite_dadi = fix( 6 * rand(2,lanci_dadi))+ones(2,lanci_dadi); % lancio dadi dadi = uscite_dadi(1,:) + uscite_dadi(2,:); % somma di 2 dadi % ---------------------------- creazione cartellini --------------------------------------- cartellini_probabilita = randperm(16); cartellini_imprevisti = randperm(16); indice_probabilita = 0; indice_imprevisti = 0; % ============================= GIOCO SINGOLA PARTITA ===================================== for i = 1 : lanci_dadi if i > 2; for k = 0 : 2; doppi(k+1) = uscite_dadi(1,i-k) == uscite_dadi(2,i-k); end; triplo = doppi(1) & doppi(2) & doppi(3) ; else doppi(1) = uscite_dadi(1,i) == uscite_dadi(2,i); triplo = 0; end; % ---------------------------------------------------------------------------------------- if dove_sono == 30; switch azione case 1 dove_sono = carcere + dadi(i); TABELLA(dove_sono,game)=TABELLA(dove_sono,game)+1; case 2 if tentativo == 1; if doppi(1); dove_sono = carcere + dadi(i); TABELLA(dove_sono,game)=TABELLA(dove_sono,game)+1; fuori = 1; else tentativo = tentativo + 1 ; end; else dove_sono = carcere + dadi(i); TABELLA(dove_sono,game)=TABELLA(dove_sono,game)+1; fuori = 1; end; case 3 if tentativo == 1 | tentativo == 2 if doppi(1); dove_sono = carcere + dadi(i); TABELLA(dove_sono,game)=TABELLA(dove_sono,game)+1; fuori = 1; else tentativo = tentativo + 1 ; end; else dove_sono = carcere + dadi(i); TABELLA(dove_sono,game)=TABELLA(dove_sono,game)+1; fuori = 1; end; end; elseif triplo & fuori; dove_sono = 30 ; TABELLA(dove_sono,game)=TABELLA(dove_sono,game)+1; else dove_sono = dove_sono + dadi(i); if dove_sono > 40 dove_sono = dove_sono - 40; end TABELLA(dove_sono,game)=TABELLA(dove_sono,game)+1; end; % ------------------------------ CARTELLINI ---------------------------------------------- if dove_sono == 7 | dove_sono == 22 | dove_sono == 36 % casella degli imprevisti if indice_imprevisti == 16 indice_imprevisti = 0; end; indice_imprevisti = indice_imprevisti +1 ; imprevisti = cartellini_imprevisti(indice_imprevisti); switch imprevisti case 1; dove_sono = dove_sono - 3; % fai 3 passi indietro case 2; dove_sono = 40; % --> al Via case 3; dove_sono = 11; % --> via Accademia case 4; dove_sono = 25; % --> stazione Nord case 5; dove_sono = 39; % --> Parco della Vittoria case 6; dove_sono = 24; % --> largo Colombo case 7; dove_sono = 30; % --> in Prigione % otherwise end; if imprevisti < 8 TABELLA(dove_sono,game)=TABELLA(dove_sono,game)+1; % aggiorno gli ACCESSI end; end % if dove_sono 7&22&36 if dove_sono == 2 | dove_sono == 17 | dove_sono == 33 % casella degli probabilita' if indice_probabilita == 16 indice_probabilita = 0; end; indice_probabilita = indice_probabilita +1 ; probabilita = cartellini_probabilita(indice_probabilita); switch probabilita case 1; dove_sono = 30; % --> in Prigione case 2; dove_sono = 40; % --> al Via case 3; dove_sono = 1; % --> vicolo Corto % otherwise end; if probabilita < 4 TABELLA(dove_sono,game)=TABELLA(dove_sono,game)+1; % aggiorno gli ACCESSI end; end % if dove_sono 2&17&33 if dove_sono == 30 ; if fuori ; % se non sono già in carcere tentativo = 1 ; % setto il 1° tentativo fuori = 0; % e sono in carcere end; TABELLA(carcere,game)=TABELLA(carcere,game)+1; % incremento il contatore #10 end; end % for lanci_dadi end % for iterazioni % ================================= FINE GIOCO =========================================== t1=etime(clock,t); disp('tempo impiegato '); disp(t1); % fine tempo di conteggio % ========================= RISULTATI IN FORMA GRAFICA =================================== somma_accessi = N_prove+1; % somma gli accessi per riga for j=1:40 TABELLA(j,somma_accessi) = sum(TABELLA(j,1:N_prove)); end % talella senza l'accesso in prigione attraverso la casella 30 TABELLA(:,somma_accessi+1) = TABELLA(:,somma_accessi); TABELLA(carcere,somma_accessi+1) = TABELLA(carcere,somma_accessi)-TABELLA(30,somma_accessi); if TABELLA(carcere,somma_accessi+1)< 0 ; disp('ATTENZIONE ! N° < 0 '); end; terreni = 1:1:40; media = mean(TABELLA(:,somma_accessi)); % faccio la media if 1 ; figure; grid on; hold on; bar(terreni,TABELLA(:,somma_accessi)/media,'c'); % a barre celesti con #30 -> #10 bar(terreni,TABELLA(:,somma_accessi+1)/media,'b'); % a barre blu senza #30 -> #10 xlabel('TERRENI'); ylabel('INDICE DI PROBABILITA'' D''ACCESSO'); title([ int2str(N_prove) ' PARTITE 'int2str(lanci_dadi) ' LANCI DI DADI ']); axis([0.5 40.5 0 2.5]); end; %---------------------------- srittura file risultati --------------------------------- x = 1:1:40; y = [x; TABELLA(:,somma_accessi+1)']; fid = fopen('esito.txt','at'); fprintf(fid,'%7d = Numero di prove ',N_prove); fprintf(fid,'%5d = lanci_dadi ',lanci_dadi); fprintf(fid,'%3d = azione \n \n',azione); fprintf(fid,'%5d %10d \n',y); fprintf(fid,'---------------------------------------- \n'); fclose(fid); % ============================= FINE PROGRAMMA =============================================