#include <stdio.h>#include <stdlib.h>//頭像面朝上的機率 int heads(){ return rand() < RAND_MAX/2;}int main(int argc, char *argv[]){ int i, j, cnt; //N爲每次實驗投幣的次數,M爲實驗的次數 int N = atoi(argv[1]), M = atoi(argv[2]); int *f = malloc((N+1) * sizeof(int)); for (i = 0; i <= N; i++) f[i] = 0; for (j = 0; j < M; j++, f[cnt]++) for (cnt = 0, i = 0; i <= N; i++) if (heads()) cnt++; for (i = 0; i <= N; i++) { printf("%2d ", i); for (j = 0; j < f[i]; j += 10) printf("*"); printf("\n"); }}
執行結果以下: [img]http://dl.iteye.com/upload/attachment/508358/a98524ee-82fc-382d-a031-1a349cd43677.bmp[/img] 不過有點疑惑的是這個結果並非徹底與機率學的正態分佈吻合,有點小的誤差,而通過幾回執行的結果好像都沒有變化,這點有點疑問,可能和僞隨機數的產生機制有關吧...