[MATLAB] Esercitazione gioco dadi

davidcape1
Un gruppo di 30 amici decide di giocare ad un gioco a turni con i dadi, avente le seguenti regole:
1) Durante ciascun turno, ciascun giocatore lancia un dado indipendentemente dagli altri (il valore di un dado è modellabile come una variabile casuale intera compresa fra 1 e 10);
2) Ciascun giocatore accumula i punti dei suoi lanci, turno dopo turno;
3) Al termine di un turno si valuta se almeno 7 giocatori hanno ottenuto il numero 3 col dado o se sono stati eseguiti 15 turni; in tali casi il gioco si interrompe, altrimenti prosegue al turno successivo
4) I vincitori sono i giocatori che hanno realizzato il maggior numero di punti.
Si scriva un programma che simuli il gioco e che stampi a schermo gli indici dei vincitori. Inoltre il programma deve riportare su di un grafico il numero di punti di ciascun giocatore, utilizzando un marker blu e a forma quadrata.

L'ho risolto così potete dirmi se va bene? Il grafico me lo disegna però gradirei avere un parere. In particolare vorrei sapere se secondo voi va bene usare il comando numel e se ho implementato bene le condizioni dello while... grazie

clearvars
amici=30;
punteggio=zeros(amici,1);
turni_max=15;
turni=0;
while turni7
for i=1:amici
dado=fix(rand()*(10-1+1)+1);
punteggio(i)=punteggio(i)+dado;
indici_giocatori_punteggio_3=find(punteggio==3);
end
turni=turni+1;
end
max_punti=max(punteggio);
for i=1:30
if punteggio(i)==max_punti
disp('indice vincitore')
disp(i)
end
end
x=1:30;
plot(x,punteggio,['--','s','b'])
xlabel('Giocatori')
ylabel('Punteggio')
title('Gioco dadi')
grid on

Risposte
davidcape1
In particolare per valutare se al termine del turno almeno 7 giocatori hanno ottenuto il numero 3 col dado, nel ciclo master while utilizzo Il comando numel, che serve a trovare il numero di elementi in un determinato vettore, combinato con il comando find interno al ciclo for slave. Il comando find lo uso per trovare all’ interno del vettore punteggio il numero di elementi con quelle caratteristiche richieste dal testo

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.