投硬幣機率模擬程序

#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] 不過有點疑惑的是這個結果並非徹底與機率學的正態分佈吻合,有點小的誤差,而通過幾回執行的結果好像都沒有變化,這點有點疑問,可能和僞隨機數的產生機制有關吧...