/* S0240.java * ポーカ検定 * (C) H.Ishikawa 2008 */ package simulation; import java.applet.*; import java.awt.*; public class S0240 extends Applet{ public void paint(Graphics g) { int NUMBER = 1000000; /* 発生させる乱数の数 */ int i; /* 表に示すi */ int count; /* 表に示すcount */ int j, j1, j2, k; /* forのカウンタ */ int f[] = new int[7]; /* iごとの度数 */ int f0[] = new int[7]; /* 理論度数 */ int n[] = new int[5]; /* 5個の数字の並び */ double xs = 0.0; /* カイ自乗値 */ double diff; /* 理論値との差 */ f0[0] = (int)(NUMBER * 0.3024); f0[1] = (int)(NUMBER * 0.5040); f0[2] = (int)(NUMBER * 0.1080); f0[3] = (int)(NUMBER * 0.0720); f0[4] = (int)(NUMBER * 0.0090); f0[5] = (int)(NUMBER * 0.0045); f0[6] = (int)(NUMBER * 0.0001); for (k = 1; k <= NUMBER; k ++){ for (j = 0; j < 5; j ++){ n[j] = (int)(Math.random() * 10); } count = 0; for (j1 = 0; j1 < 4; j1 ++){ for (j2 = j1 + 1; j2 < 5; j2 ++){ if (n[j1] == n[j2]) { count = count + 1; } } } if (count == 10){ i = 6; } else if (count == 6){ i = 5; } else{ i = count; } f[i] = f[i] + 1; } g.drawString(" i f[i] f0[i]", 10, 10); for (i = 0; i <= 6; i++){ g.drawString(" " + i, 10 , 20 + 10 * i); g.drawString(" " + f[i], 40 , 20 + 10 * i); g.drawString(" " + f0[i], 120 , 20 + 10 * i); diff = f[i] - f0[i]; xs = xs + diff * diff / f0[i]; } g.drawString(" xs = " + xs, 10, 30 + 10 * i); } }