/* S0450.java * 正規乱数の発生 * (C) H.Ishikawa 2008 */ package simulation; import java.applet.*; import java.awt.*; import java.awt.event.*; import window.Window; public class S0450 extends Applet implements ActionListener { Button button0; public void init() { button0 = new Button(" 再実行 "); add(button0); button0.addActionListener(this); } public void actionPerformed(ActionEvent e) { String label = e.getActionCommand(); repaint(); } public void paint(Graphics g){ Window w ; w = new Window(); int NUMBER = 10000; int SIZE = 20; /* ヒストグラムの大きさ */ int j; /* forのカウンタ */ int u; /* キザミの番号 */ int f[] = new int [SIZE]; /* ヒストグラム */ double ex = 10; /* 平均値 */ double sd = 2; /* 標準偏差 */ /* グラフィックの準備 */ int SPACE = 40; int HIGHT = 400; int WIDTH = 640; w.setWindow(0, 0.0,0.0,20.0,0.2, SPACE,HIGHT-SPACE,WIDTH-SPACE,SPACE); w.axis(0, "", 5, "", 0.05,g); /* メイン */ for (j = 0; j < NUMBER; j++) { u = (int)(normal(ex, sd)); if (u >= 0 || u < SIZE) {f[u] = f[u] + 1;} } /* ヒストグラムを書く */ g.setColor(Color.red); for (u = 0; u < SIZE; u ++) { w.line(0, u + 0.5, 0, u + 0.5, (double)f[u] / NUMBER, g); } } double normal(double ex, double sd){ double xw = 0.0; double x; int n; for (n = 1; n <= 12; n ++) { /* 12個の一様乱数の合計 */ xw = xw + Math.random(); } x = sd * (xw - 6.0) + ex; return (x); } }