Advertisement
Markort

AcadEx: Expected Mean of a Dice Output - ITA

Apr 12th, 2013 (edited)
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.19 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <math.h>
  5. #define NMAX 1000000
  6. #define MaxFacce 100
  7.  
  8. int getInt (char*,int,int);
  9. double mediaCamp (int*,int);
  10. double devStd (int*,double,int);
  11.  
  12. int main () {
  13.   int x, i, c, j, dati[NMAX], N, facce;
  14.   double media, dev;
  15.   srand48(time(0));
  16.   facce = getInt("Facce del dado",1,MaxFacce);
  17.   c = getInt("Inserire numero da attendere",1,facce);
  18.   N = getInt("Numero di prove",1,NMAX);
  19.   for(i=0;i<N;i++) {
  20.     j=0;
  21.     do {
  22.       x = (lrand48()%facce)+1;
  23.       j++;
  24.     } while(x!=c);
  25.     *(dati+i) = j;
  26.   }
  27.   media = mediaCamp(dati,N);
  28.   dev = devStd(dati,media,N);
  29.   printf("Attesa: %lf +- %lf\n",media,3*dev/N);
  30.   return 0;
  31. }
  32.  
  33. int getInt (char*mess,int min, int max) {
  34.   int out;
  35.   do {
  36.     printf("%s tra %d e %d: ",mess,min,max);
  37.     scanf("%d",&out);
  38.   } while(out<min||out>max);
  39.   return out;
  40. }
  41.  
  42. double mediaCamp (int*array,int len) {
  43.   int i;
  44.   double out=0;
  45.   for (i=0;i<len;i++) {
  46.     out+= *(array+i);
  47.   }
  48.   return out/len;
  49. }
  50.  
  51. double devStd (int*array,double in, int len) {
  52.   int i;
  53.   double out=0;
  54.   for (i=0;i<len;i++) {
  55.     out+= pow(*(array+i),2);
  56.   }
  57.   return sqrt(out-pow(in,2));
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement