/* generazione di numeri casuali con probabilita'
pari a quella della somma di due dadi a sei facce
- usa un array di probabilita' cumulate per ciascuno
dei valori possibili
- usa un array di frequenze assolute
- azzera l'array delle frequenze
- ripeti NPROVE volte la generazione con probabilita' assegnata
- visualizza i dati per il primo valore (2)
- per ognuno dei valori possibili da 3 a 12
- visualizza il valore
- visualizza la probabilita' semplice
ricavandola come differenza di due cumulate consecutive
- visualizza la frequenza relativa, dividendo quella
assoluta per il numero di prove, con divisione double
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "genProbDiscr.h"
#define NPROVE 10000
#define NMOD 11
int main(int argc, char *argv[])
{
int freq[NMOD];
double prob[NMOD]={1.0/36,3.0/36,6.0/36,10.0/32,15.0/36,21.0/36,
//2 3 4 5 6 7
26.0/36,30.0/36,33.0/36,35.0/36,36.0/36};
//8 9 10 11 12
// probabilita cumulate
int i;
for (i=0;i<NMOD;i++) // inizializza le frequenze assolute
freq[i]=0;
for (i=0;i<NPROVE;i++)
freq[genProbDiscr(prob,NMOD)]+=1;
printf("Valore %2d - probabilita' %lf - frequenza rilevata %lf\n",
2,prob[0],(double)freq[0]/NPROVE); // dati del primo valore
for (i=1;i<NMOD;i++)
printf("Valore %2d - probabilita' %lf - frequenza rilevata %lf\n",
i+2,prob[i]-prob[i-1],(double)freq[i]/NPROVE);
// visualizza le probabilita' semplici anziche' le cumulate
return 0;
}