Statistiche Craps in C

Pubblicità

Albert10

Nuovo Utente
Messaggi
2
Reazioni
0
Punteggio
0
Buon pomeriggio a tutti,

non riesco proprio a venire a capo del seguente problema:

Scrivere un programma che esegua 1.000.000 di volte il gioco del Craps (senza l'intervento umano) e risponda a ognuna delle seguenti domande:
Quanti giochi vengono vinti al primo lancio, al secondo lancio, ….al ventesimo ed oltre?
Quanti giochi vengono persi al primo lancio, al secondo lancio, al ventesimo ed oltre?
Quali sono le possibilità di vincere al Craps? Dovreste scoprire che il Craps è uno dei giochi di casinò più corretti. Cosa pensate che ciò significhi?
Qual'è la lunghezza media di una partita di Craps?
Le possibilità aumentano con la durata del gioco?

Io il programma del Craps sono riuscito a svilupparlo ed è il seguente:

C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int lancia();

int main()
{
    int lancio, punteggio;

    srand(time(NULL));
    lancio=lancia();
    printf("punteggio %d ", lancio);
    if (lancio==7 || lancio==11)
       printf("\nHai ottenuto %d hai vinto ", lancio);
    else if(lancio==2 || lancio==3 || lancio==11 )
       printf("\nHai ottenuto %d hai perso ", lancio);
   else{
    do
    {
        punteggio=lancia();
    } while (punteggio !=lancio  &&  punteggio !=7 );
         if (punteggio == 7)
            printf("\nHai ottenuto %d hai perso", punteggio);
        else
            printf("\nHai ottenuto %d hai vinto " , punteggio);   
   }
}

int lancia()
{
     int a,b;
     a=1+rand()%6;
     b=1+rand()%6;
     return a+b;
}

Grazie a chi mi vorrà dare una mano
 
Ultima modifica da un moderatore:
Quale problema hai di preciso ? Non svolgiamo compiti per caso per intero, aiutiamo semmai passo passo.
 
Quale problema hai di preciso ? Non svolgiamo compiti per caso per intero, aiutiamo semmai passo passo.
Se ho capito bene l'esercizio vuole che si esegui un ciclo un milione di volte, non riesco a capire come memorizzare le vincite al primo, al secondo, ...al ventesimo e così via tentativo.
 
Un inizio e li dove calcoli il risultato, all fine, aggiungere il punteggio a ogni lancio;

Se non hai ancora studiato il malloc, puoi iniziare con una tabella statica,
su un moderno pc sono 4M,

static int punteggi[1000000];

poi nel main, dopo la giocata,

punteggi[ciclo] = punteggio;

con questo primo passo pero' nonj potrai rispondere credo a utte le domande.
Non ho voglia di studiare il gioco.
 
Ok ho riscritto il tuo codice in questo modo: ho inserito una struct per tenere traccia dei dati.

Codice:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int lancia();
float calcolo_prob(int a);   /**** funzione per i lcalcolo probabilità ***/

/*****   inserisco una struttura per tenere traccia delle vincite,perdite ecc *****/
typedef struct {
    int tot_vinte;
    int tot_perse;
    float probabilita_vittoria;
}Data;



int main()
{
    int lancio, punteggio, tot_game=1000000;
    Data dati = {0,0,0};                      /*** inizializzo la struttura dati ****/
    srand(time(NULL));

    while(tot_game > 0)
        {

    lancio=lancia();
    printf("punteggio %d ", lancio);
    if (lancio==7 || lancio==11)
    {
        printf("\nHai ottenuto %d hai vinto ", lancio);
        dati.tot_vinte++;
    }


    else if(lancio==2 || lancio==3 || lancio==11 )
    {
        printf("\nHai ottenuto %d hai perso ", lancio);
        dati.tot_perse++;
    }

   else{
    do
    {
        punteggio=lancia();
    } while (punteggio !=lancio  &&  punteggio !=7 );
         if (punteggio == 7)
         {
             printf("\nHai ottenuto %d hai perso", punteggio);
             dati.tot_perse++;
         }
        else
        {
            printf("\nHai ottenuto %d hai vinto " , punteggio);
            dati.tot_vinte++;
        }

   }
   tot_game--;     /**** contatore che tiene traccia del totasle delle partite *****/
        }
        /**** recap finale dei dati raccolti *****/
    dati.probabilita_vittoria = calcolo_prob(dati.tot_vinte);
    printf("\n\nTotale vittorie: %d", dati.tot_vinte);
    printf("\nTotale perse: %d", dati.tot_perse);
    printf("\nPercentuale di vittoria: %.2f%% ", dati.probabilita_vittoria);
    return 0;
}

int lancia()
{
     int a,b;
     a=1+rand()%6;
     b=1+rand()%6;
     return a+b;
}

float calcolo_prob(int a)
{
    float prob;
    prob = a / 10000.0;
    return prob;
}
--- i due messaggi sono stati uniti ---
cosi hai la probabilità di vittoria per tenere traccia della durata delle partite e come e quando vinci basta aggiungere due vettori ad allocazione dinamica su struct e poi andare di conseguenza ad incrementare quando vinci oppure perdi..
 
Pubblicità
Pubblicità
Indietro
Top