< F2D A838B838D96402E6A7464>

Similar documents
< F2D A839382CC906A2E6A7464>

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

< F2D B838A835882CC8CF68EAE2E6A7464>

< F2D834F838C A815B A CC>

< F2D89BA8EE882C E6A7464>

< F2D E E6A7464>

< F2D B825082CC96E291E82E6A7464>

< F2D92DE82E8914B82CC977088D32E6A7464>

< F2D8EA CE909482CC92EA82852E6A7464>

< F2D82518CC282CC D2E6A7464>

< F2D82B682E182F182AF82F12E6A7464>

< F2D F B834E2E6A7464>

< F2D825282CC947B909482CC A815B83682E6A>

< F2D BCA82CC978E89BA82CC8EC08CB12E6A7464>

Java言語 第1回

2

ガイダンス

Java言語 第1回

Prog1_12th

Java演習(2) -- 簡単なプログラム --

text_12.dvi

untitled

Java言語 第1回

ガイダンス

text_13.dvi

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

ガイダンス

Microsoft PowerPoint - OOP.pptx

Applet java.lang.object java.awt.component java.awt.container java.awt.panel java.applet.applet

問1

Microsoft PowerPoint - prog11.ppt

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

Microsoft PowerPoint prog1_doc2x.pptx

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

<4D F736F F F696E74202D AC C8899E D834F E >

Prog2_11th

Prog1_12th


問題1 以下に示すプログラムは、次の処理をするプログラムである

Chapter 20. [ ] ; [ ] = new [ ] ; Color colors [ ] = new Color[ 20 ]; // 20 Button operations [ ] = new Button[ 10 ]; // 10 colors[ 3 ] = new Color( 1

Microsoft PowerPoint - prog11.ppt

Java言語 第1回

KeyListener init addkeylistener addactionlistener addkeylistener addkeylistener( this ); this.addkeylistener( this ); KeyListener public void keytyped

アプレットの作成


Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=

Safari AppletViewer Web HTML Netscape Web Web 15-1 Applet Web Applet init Web paint Web start Web HTML stop destroy update init Web paint start Web up

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

GUIプログラムⅣ

Microsoft PowerPoint ppt

PowerPoint Presentation

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

GUIプログラムⅤ

Microsoft PowerPoint prog1_doc2.pptx

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

Microsoft PowerPoint - OOP.pptx

public class Kadai _02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai _02"); (2) フレームのクラス名は MyFrame とし 以下

Java 2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q 2.

r2.dvi

PowerPoint プレゼンテーション

ガイダンス

2008 e-learning T050050

次の演習課題(1),(2)のプログラムを完成させよ

Microsoft PowerPoint - prog12.ppt

ガイダンス

Microsoft PowerPoint - prog10.ppt

PowerPoint Presentation

awt の主要なクラスを下記に示す クラス Component Container Button Label Panel Frame 説明画面にユーザインターフェイス要素として表示し, ユーザとのやり取りを行うコンポーネントを表すすべてのコンポーネントのスーパークラスになる ほかのコンポーネントを含

Java演習(9) -- クラスとメソッド --

Taro-korattsu.jtd

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

2 p.2 2 Java > javac Hello0.java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.j

JAVA入門

Microsoft PowerPoint - prog10.ppt

アプレットⅤ

PowerPoint プレゼンテーション

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

r6.dvi

public class MyFrame { private JPanel panel1; private JPanel panel2; private JPanel panel3; private JPanel panel4; private JLabel label1; private JTex

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - prog13.ppt

19 3!! (+) (>) (++) (+=) for while 3.1!! (20, 20) (1)(Blocks1.java) import javax.swing.japplet; import java.awt.graphics;

r3.dvi

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

: : : TSTank 2

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

r4.dvi

2

Microsoft PowerPoint ppt

AWT setcolor, drawstring Java AWT Abstract Window Toolkit Graphics AWT import import java.awt.* ; // AWT Graphics import java.awt.graphics; // AWT Gra

public static void main(... ) { Copyright by Tatsuo Minohara 2004 rev. Oct. 6 Macintosh Java Primer Chapter 3-2

I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav

Microsoft Word 年度情報コミュニケーション実験II(Ver0.9)c.docx

Taro-twokansu3.jtd

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

表示の更新もそういた作業のひとつに当たる スレッドの使用アニメーション アニメーションやシミュレーションなどは画面の更新が一定のタイミングで行われていく この連続した画面の更新をスレッドを利用して行う しかし paint() メソッドを直接呼び出して表示を更新することはできない その理由

Color.cyan, Color.yellow, Color.pink, Color.orange, Color.white, Color.black, Color.gray, Color.darkGray, Color.lightGray ; Button barray [ ] = new Bu

JAVA入門

Microsoft Word - Java3.DOC

Transcription:

モンテカルロ法 [Java アプレット ] [Java アプリケーション ] 1. はじめに 一辺の長さが 2 の正方形とそれに内接する半径 1 の円が紙に書かれています この紙の上からたくさんのゴマをばらまきます 正方形の中に入ったゴマの数と そのうちで円の中に入ったゴマの数も数えます さあ このゴマの数からどうやって円周率 π を求めるのでしょうか <シミュレーションの考え方 > 一辺の長さ2の正方形の面積は4で それに内接する半径 1の円の面積をSとします 更に 正方形の中に入ったゴマの数をN 個 円の中に入ったゴマの数をn 個とします ( 一辺の長さ2の正方形の面積 ):( それに内接する半径 1の円の面積 ) =( 正方形の中に入ったゴマの数 ):( 円の中に入ったゴマの数 ) が成り立つので 4:S=N:n となります よって S=4n/N となり nとnが分かれば Sが求まります S= 半径 半径 π=1 1 π となるので S=π となり 求める円周率 πは 先ほど求め た面積 Sになります このように 確率を利用して問題を解決する方法を モンテカルロ法 と言います シミュレーションソフト ゴマをまいて円周率 πを求める を使って 円周率 πの近似値が求まる 様子を観察してみてください 2.Java アプレット (1) Java プログラムリスト モンテカルロ法によるπの近似 ( ゴマをまいて 円周率 πが求まる!!) Copyright ( C) K.Niwa 2001.11. 6 (Javaアプレット) import java.applet.applet; import java.awt.*; import java.awt.event.*; -144-

import java.lang.math; public class Montecal2 extends Applet{ Button[] mybtn; ボタン型として宣言する Panel mypanel; パネル型として宣言する int flag; 変数宣言 double x; int N; ゴマの個数 int count; ループカウンター *****public void init() init メソット ( void は値を返さないメソッドの意 )************************ public void init(){ setbackground( Color.lightGray ); mybtn=new Button[ 4 ]; 背景色をグレーにする ボタンの実体化 mybtn[ 0 ] =new Button (" 初期化 "); mybtn[ 1 ] =new Button (" 自動 500 個 "); mybtn[ 2 ] =new Button (" 自動 5000 個 "); mybtn[ 3 ] =new Button (" 自動 50000 個 "); mypanel=new Panel (); パネルの実態化 mypanel.setlayout( new GridLayout( 1,4 )); ハ ネルをク リット レイアウトにする for ( count=0;count < =3;count++ ){ パネルにボタンを貼り付ける mypanel.add( mybtn[ count ]); setlayout( new BorderLayout ()); 全体をボーダーレイアウトにする add ("South",myPanel); パネルを南に貼り付ける 初期化ボタンを押したときのイベント処理 mybtn[ 0 ].addactionlistener( new ActionListener(){ flag=0; ボタン識別子 ); 自動 500 個ボタンを押したときのイベント処理 mybtn[ 1 ].addactionlistener( new ActionListener(){ flag=1; ボタン識別子 N=500; ); 自動 5000 個ボタンを押したときのイベント処理 mybtn[ 2 ].addactionlistener( new ActionListener(){ flag=2; ボタン識別子 N=5000; ); 自動 50000 個ボタンを押したときのイベント処理 mybtn[ 3 ].addactionlistener( new ActionListener(){ flag=3; ボタン識別子 N=50000; ); public void init() -145-

*****paint メソット *************************************************************************** public void paint( Graphics g){ if ( flag==0){ g.drawstring ("Copyright( C) K.Niwa 2001.11",10,20 ); 作者名 else if ( flag==1 flag==2 flag==3){ double x,y,pai,t; 変数宣言 int i,sum=0,px,py; 変数宣言と変数初期化 for ( i=1;i < =N;i++ ){ for ( t=0;t< 1000;t++ ){ 時間稼ぎ x=math.random (); y=math.random (); if ( x*x+y*y< 1 ){ 円内に入ったら g.drawline( px,py,px,py ); 点を打つ sum++; else if ( x*x+y*y> 1){ g.setcolor( Color.white ); g.drawline( px,py,px,py ); 点を打つ Font f=new Font(( g.getfont ()).getname(),font.bold,20); g.setfont() f ; g.clearrect( 0,305,300,55 ); g.setcolor( Color.black ); g.drawstring( sum+" / "+i+" 個 ",80,325); g.drawstring (π= " "+pai,170,280); (2) HTML リスト < HTML > < HEAD> <!------------------------------------------------------------------------------------------------------------------------------------- ゴマをまいて円周率 πを求める ( モンテカルロ法によるπの近似 ) Copyright ( C) K.Niwa 2001.11. 6 --------------------------------------------------------------------------------------------------------------------------------------> < /HEAD> < BODY > < CENTER< > B > ゴマをまいて円周率 πを求める!! < /B> < BR> ( モンテカルロ法によるπの近似 ) < BR>< BR> < APPLET CODE="Montecal2.class" WIDTH="350" HEIGHT="360" >< /APPLET> < BR>< BR> ゴマを 50,000 個まいて πの近似値を求めています... -146-

< /CENTER> < /BODY> < /HTML> 3.Java アプリケーション プログラムリスト Fモンテカルロ法によるπの近似 ( ゴマをまいて 円周率 πが求まる!!) Copyright ( C) K.Niwa 2002.08.24 (Javaアプリケーション) import java.awt.*; import java.awt.event.*; import java.lang.math; public class FMontecal2 extends Frame { Frame クラスを継承する Button[] mybtn; Panel mypanel; ボタン型として宣言する パネル型として宣言する int flag; 変数宣言 double x; int N; int count; ゴマの個数 ループカウンター ***** フレームとイベントの定義 ************************************************************ public FMontecal2(){ setbackground( Color.lightGray ); 背景色を黒にする setsize( 300+20,360 ); フレームの大きさ addwindowlistener( new WindowAdapter (){ 閉じるボタンのイベント public void windowclosing( WindowEvent e){ System.exit( 0 ); ); mybtn=new Button[ 4 ]; ボタンの実体化 mybtn[ 0 ] =new Button (" 初期化 "); mybtn[ 1 ] =new Button (" 自動 500 個 "); mybtn[ 2 ] =new Button (" 自動 5000 個 "); mybtn[ 3 ] =new Button (" 自動 50000 個 "); mypanel=new Panel (); パネルの実体化 mypanel.setlayout( new GridLayout( 1,4 )); ハ ネルをク リット レイアウトにする for ( count=0;count < =3;count++ ){ mypanel.add( mybtn[ count ]); パネルにボタンを貼り付ける setlayout( new BorderLayout ()); 全体をボーダーレイアウトにする add ("South",myPanel); パネルを南に貼り付ける 初期化ボタンを押したときのイベント処理 mybtn[ 0 ].addactionlistener( new ActionListener(){ flag=0; ボタンの識別子 ); -147-

自動 500 個ボタンを押したときのイベント処理 mybtn[ 1 ].addactionlistener( new ActionListener(){ flag=1; ボタンの識別子 N=500; ); 自動 5000 個ボタンを押したときのイベント処理 mybtn[ 2 ].addactionlistener( new ActionListener(){ flag=2; ボタンの識別子 N=5000; ); 自動 50000 個ボタンを押したときのイベント処理 mybtn[ 3 ].addactionlistener( new ActionListener(){ flag=3; ボタンの識別子 N=50000; ); public FMontecal2() *****paint メソット *************************************************************************** public void paint( Graphics g){ if ( flag==0){ g.drawstring ("Copyright( C) K.Niwa 2001.11",10,20 ); 作者名 else if ( flag==1 flag==2 flag==3){ double x,y,pai,t; 変数宣言 int i,sum=0,px,py; 変数宣言と変数初期化 for ( i=1;i < =N;i++ ){ for ( t=0;t< 1000;t++ ){ 時間稼ぎ x=math.random (); y=math.random (); if ( x*x+y*y< 1 ){ 円内に入ったら g.drawline( px,py,px,py ); 点を打つ sum++; else if ( x*x+y*y> 1){ g.setcolor( Color.white ); g.drawline( px,py,px,py ); 点を打つ Font f=new Font(( g.getfont ()).getname(),font.bold,20); g.setfont() f ; -148-

g.clearrect( 0,305,300,55 ); g.setcolor( Color.black ); g.drawstring( sum+" / "+i+" 個 ",80,325); g.drawstring (π= " "+pai,170,280); public void paint( Graphics g) /****** public static void main メソット *********************************************************/ public static void main( String[] args){ Frame w=new FMontecal2 (); w.show (); public static void main( String[] args) public class FMontecal2 extends Frame -149-