同じ誕生日の確率
int ox=50,oy=200; for(i=0;i<knum;i++){ // (int)は整数型に変換 g.drawLine(ox+i*3,oy,ox+i*3,(int)(oy-prob[i]*100)); }
void button1_actionPerformed(ActionEvent e) { //確率計算 knum=Integer.parseInt(knumField.getText()); int i; double prb=1.0; //80人以上の場合、80にする if(knum>80) { knum=80; knumField.setText("80"); } //確率計算、配列記録 for(i=1;i<knum;i++){ prb = prb*(365-i)/365; prob[i]=1-prb; } //k人の確率表示 label1.setText(Double.toString(1-prb)); //再表示 paint()を呼び出す repaint(); }
public void paint(Graphics g){ //グラフ表示 int i; //グラフの原点 int ox=50,oy=200; for(i=0;i<knum;i++){ // (int)は整数型に変換 g.drawLine(ox+i*3,oy,ox+i*3,(int)(oy-prob[i]*100)); } }
import java.awt.*; import java.awt.event.*; import java.applet.*; public class Birthday extends Applet { private boolean isStandalone = false; int knum = 10; double prob[] = new double[80]; private TextField knumField = new TextField(); private Label label1 = new Label(); private Button button1 = new Button(); //コンポーネントの初期化 public void init() { //GUI部品の配置、設定 knumField.setText("10"); knumField.setBounds(new Rectangle(40, 40, 50, 20)); this.setLayout(null); label1.setBackground(SystemColor.activeCaptionText); label1.setText("label1"); label1.setBounds(new Rectangle(200, 40, 70, 20)); button1.setLabel("計算"); button1.setBounds(new Rectangle(120, 40, 60, 20)); //ボタンを押したとき呼び出す関数を指定 button1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { button1_actionPerformed(e); } }); this.add(knumField, null); this.add(button1, null); this.add(label1, null); } void button1_actionPerformed(ActionEvent e) { //確率計算 int i; double prb = 1.0; //人数を読む knum = Integer.parseInt(knumField.getText()); //80人以上の場合、80にする if (knum > 80) { knum = 80; knumField.setText("80"); } //確率計算、配列記録 for (i = 1; i < knum; i++) { prb = prb * (365 - i) / 365; prob[i] = 1 - prb;//i人が同じ誕生日となる確率 } //k人の確率表示 label1.setText(Double.toString(1 - prb)); //再表示 paint()を呼び出す repaint(); } public void paint(Graphics g) { //グラフ表示 int i; //グラフの原点 int ox = 50, oy = 200; //y軸は方向を反転する for (i = 0; i < knum; i++) { // (int)は整数型に変換 g.drawLine(ox + i * 3, oy, ox + i * 3, (int) (oy - prob[i] * 100)); } } }