/****************************/ /* 乱数の生成 */ /* coded by Y.Suganuma */ /****************************/ #include <stdio.h> #include <limits.h> int uniform(int); main() { double r; int i1, k, x1 = 123, x2, sum[10] = {0}; for (i1 = 0; i1 < 1000000; i1++) { x2 = uniform(x1); x1 = x2; r = (double)x2 / INT_MAX; r = (r + 1.0) / 2.0; k = (int)(r / 0.1); if (k < 0) k = 0; else if (k > 9) k = 9; sum[k]++; } for (i1 = 0; i1 < 10; i1++) printf("%f\n", sum[i1]/1000000.0); return 0; } /******************************/ /* 混合合同法による乱数の生成 */ /******************************/ int uniform(int x) { return 262145 * x + 17; }