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; } |
Direct link: https://paste.plurk.com/show/235312