/* A0440.java 4章4.解答 * 区間a,bの三角分布乱数の発生 * (C) H.Ishikawa 2008 */ package simulation; import java.applet.*; import java.awt.*; import java.awt.event.*; import window.Window; public class A0440 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 f[] = new int [SIZE]; /* ヒストグラム */ int j; /* forのカウンタ */ int u; /* キザミの番号 */ double x; /* 三角分布の乱数 */ double a = 5; /* 三角分布の下限 */ double b = 15; /* 三角分布の上限 */ /* グラフィックの準備 */ int SPACE = 40; int HIGHT = 400; int WIDTH = 640; w.setWindow(0, 0.0,0.0,20,0.20, SPACE,HIGHT-SPACE,WIDTH-SPACE,SPACE); w.axis(0, "x",1, "f[x]/NUMBER", 0.050,g); /* メイン */ for (j = 0; j < NUMBER; j ++) { x = (b + a) / 2.0 + ((Math.random() + Math.random()) - 1.0) * (b - a) / 2.0; u = (int)x; 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); } } }