My student number: s134099 0 1 2 3 4 5 6 7 8 9 10 4 104 461 1163 2119 2380 2010 1195 453 103 8 0: * 1: *** 2: ********** 3: ************************ 4: ******************************************* 5: ************************************************ 6: ***************************************** 7: ************************ 8: ********** 9: *** 10: * ---------------------------------- |
棒グラフは上の例では出現頻度を整数型演算で50で割ったものとなっています.ただし,ゼロ回でもそれがゼロであることが分かるように*を表示するようにしています.
時間があれば何回くらい繰り返すと左右対称の二項分布になるか試してみましょう.
/* ************************************************** */ /* */ /* プログラミング入門 情報科学演習C7 */ /* レポート課題 */ /* 2013.12.16 */ /* */ /* ************************************************** */ /* */ /* 学生番号: */ /* */ /* 氏名: */ /* */ /* ************************************************** */ /* */ /* この行以降に解答のプログラムを書くこと */ #include <stdio.h> #include <stdlib.h> #include <time.h> main() { srand((unsigned) time(NULL)); int i, j, count, face, coin[11]; printf("My student number: s134099\n\n"); for(i=0; i<=10; i++) coin[i] = 0; for(i=1; i<=10000; i++){ count = 0; for(j=1; j<=10; j++){ face = rand() % 2; if(face==1) count++; } coin[count]++; } for(i=0; i<=10; i++) printf("%3d ", i); printf("\n"); for(i=0; i<=10; i++) printf("%4d ", coin[i]); printf("\n\n"); for(i=0; i<=10; i++){ printf("%2d: ", i); for(j=0; j<=coin[i]/50; j++) printf("*"); printf("\n"); } printf("\n----------------------------------\n\n"); return(0); } |