1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#define star 56
#define MAX 100000

/*平均數函數*/
double mean( float pro[] , int num )
{
    float ave = 0;
    int i , j;
    for( i = 0 ; i < num ; i ++)
         ave+= ((i + 1)*pro[i]) / num;
//    printf("ave = %d", ave);
    return ave;
}

/*變異數函數*/ 
double var( float pro[], int num )
{
    double m = mean( pro , 6);
    float sd1, sd2 = 0;
    int i , j;
    for( i = 0 ; i < 5 ; i++ )
         sd1+= ((i+1) - m )*((i+1) - m ) / num;
    sd2 = sqrt(sd1);
//    printf("sd2 = %d", sd2);
    return sd2;       
} 



int main()
{
    int i , j , sum;
    int num;
    
    
    printf("請輸入欲擲數目:"); 
    scanf("%d",&sum);
    srand(sum);
    int dice[6];
    float pro[6];
    
    printf("%d\n",sum);
    
    for( i = 0 ; i < 6 ; i++ )
         dice[i] = 0 ; 
         
    for( i = 0 ; i < 6 ; i++ )
         pro[i] = 0;
    
    for( i = 0 ; i < star ; i++ )
         printf("*");
         
    printf("\n");     
    srand(time(NULL));
    
    printf("點數"); 
    printf("        1        2        3        4        5        6\n"); 
   
           
    /*計算次數*/ 
    if( sum <= MAX ){    
        for( i = 0 ; i < sum ; i++ ){ 
             num = rand()%6 + 1; 
         
             if( num == 1 )
                  dice[0]++;
             
             else if( num == 2 )
                  dice[1]++;
             
             else if( num == 3 )
                  dice[2]++;
             
             else if( num == 4 )
                  dice[3]++;
             
             else if( num == 5 )
                  dice[4]++;
             
             else if( num == 6 )
                  dice[5]++;
             
         }
    }
    else
         printf("欲擲數目過多!");
    printf("次數"); 
    for( i = 0 ; i < 6 ; i++)
         printf("%9d", dice[i]);
    printf("\n");
         
         
    /*計算機率*/     
    for( i = 0 ; i < 6 ; i++)
        pro[i] = dice[i]/(float)sum;
    printf("機率");
    for( i = 0 ; i < 6 ; i++)
         printf("%9f", pro[i]); 
    printf("\n\n");
    
    
    /*計算平均點數*/
    printf("平均點數=%f\n", mean( pro , 6));
    
    
    /*計算變異數*/
    printf("變異數=%f\n", var( pro , 6 )); 
     
         
    for( i = 0 ; i < star ; i++ )
         printf("*");
         
    printf("\n");
    system("pause");
    return 0;
}