Statistiche Craps in C

Albert10

Nuovo Utente
2
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:

bigendian

Utente Attivo
748
431
OS
Linux
Quale problema hai di preciso ? Non svolgiamo compiti per caso per intero, aiutiamo semmai passo passo.
 

Albert10

Nuovo Utente
2
0
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.
 

bigendian

Utente Attivo
748
431
OS
Linux
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.
 

giammo82

Utente Attivo
1,209
525
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;
}
Post unito automaticamente:

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..
 

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili