乱数の生成

/****************************/
/* 乱数の生成               */
/*      coded by Y.Suganuma */
/****************************/
import java.io.*;

class Test {
	static void main(String args[]) throws IOException
	{
		double r;
		int i1, k, x1 = 123, x2, sum[] = new int [10];

		for (i1 = 0; i1 < 10; i1++)
			sum[i1] = 0;

		for (i1 = 0; i1 < 1000000; i1++) {
			x2 = uniform(x1);
			x1 = x2;
			r  = (double)x2 / Integer.MAX_VALUE;
			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++)
			System.out.println(sum[i1]/1000000.0);
	}

	/******************************/
	/* 混合合同法による乱数の生成 */
	/******************************/
	static int uniform(int x)
	{
		return 262145 * x + 17;
	}
}