#include #include #include #define PMIN 1 #define PMAX 10000 void inserimento(int *Np); int gioca(int *passi, int N); void salva_freq(int *passi, int Np, int passi_max); int main() { int Np, i; int passi[100] = {0}; int N_mario = 0; srand48(time(NULL)); inserimento(&Np); for(i = 0; i < Np; i++) { int N = drand48() * 11 + 10; int risultato = gioca(passi, N); N_mario += risultato; } salva_freq(passi, Np, 100); printf("Resoconto:\n----------\n"); printf("N partite: %d\nN vittorie di Gino: %d\nN vittorie di Mario: %d\n", Np, Np - N_mario, N_mario); return 0; } void inserimento(int *Np) { *Np = 0; do { printf("Inserire il numero di partite da giocare, compreso tra %d e %d: \n", PMIN, PMAX); scanf("%d", Np); } while(*Np < PMIN || *Np > PMAX); } int gioca(int *passi, int N) { int N_passi = 0; int estratti[21] = {0}; int P = N; while(P > 0 && P < 4 * N) { int k = drand48() * N + 1; if(estratti[k]) { P -= k; } else { P += k; } estratti[k] = 1; N_passi++; } passi[N_passi]++; return (P <= 0); } void salva_freq(int *passi, int Np, int passi_max) { int i; FILE *output = fopen("passi.dat", "w"); if(output == NULL) { printf("Impossibile aprire il file\n"); exit(1); } for(i = 0; i < passi_max; i++) { fprintf(output, "%d %.4lf\n", i, passi[i] / (double) Np); } fclose(output); }