/* S0420.java * 指数乱数の発生 * (C) H.Ishikawa 2008 */ package simulation; import java.applet.*; import java.awt.*; import java.awt.event.*; import window.Window; public class S0420 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 j; /* forのカウンタ */ int u; /* τの整数部分 */ int f[] = new int[100]; /* uの頻度 */ double tau; /* τ */ double lambda = 1; /* λ */ /* グラフィックの準備 */ int SPACE = 40; int HIGHT = 400; int WIDTH = 640; w.setWindow(0, 0.0,0.0,15,0.8, SPACE,HIGHT-SPACE,WIDTH-SPACE,SPACE); w.axis(0, "tau", 1, "f[tau] / NUMBER", 0.1,g); /*メイン*/ for (j = 0; j <= NUMBER; j++) { tau = -1.0 / lambda * Math.log(1.0 - Math.random()); u = (int)tau; f[u] = f[u] + 1; } /* ヒストグラムを書く */ g.setColor(Color.red); for (u = 0; u < 15; u ++) { w.line(0, u + 0.5, 0, u + 0.5, (double)f[u] / NUMBER, g); } } }