BuffonÀÇ ¹Ù´Ã ¶³¾î¶ß¸®±â

 

1. ¼­·Ð

 

BuffonÀÇ ¹Ù´Ã ¶³¾î¶ß¸®±â ¹®Á¦´Â ±âÇÏÇÐÀû È®·ü ¹®Á¦ Áß¿¡¼­ ¸Å¿ì ÀüÅëÀûÀÎ ¹®Á¦ ÁßÀÇ ÇϳªÀÌ´Ù. ÀÌ ¹®Á¦´Â 1977 ³â¿¡ óÀ½À¸·Î ½ÃÀ۵Ǿú´Ù. ÀÌ ¹®Á¦´Â ÆòÇ༱ µéÀÌ ÀÏÁ¤ÇÑ °£°ÝÀ¸·Î ±×·Á ÀÖ´Â Á¾ÀÌ À§¿¡ ¹Ù´ÃµéÀ» ¶³¾î¶ß¸± ¶§ ¹Ù´ÃÀÌ ±× ÆòÇ༱ÀÇ Çϳª¿Í ¸¸³ª´Â È®·üÀ» ±¸ÇÏ´Â ¹®Á¦ÀÌ´Ù. ±×·±µ¥ ÀÌ È®·üÀº Á÷Á¢¿øÁÖÀ²°ú °ü°è°¡ ÀÖ´Ù´Â µ¥ ÀÌ ¹®Á¦ÀÇ Á߿伺ÀÌ ÀÖ´Ù°í ÇÏ°Ú´Ù. ¿©±â¼­´Â ¹Ù´ÃÀÇ ±æÀÌ°¡   ÀÌ¿ôÇÏ´Â µÎ ÆòÇ༱ »çÀÌÀÇ °Å¸®¿Í ÀÏÄ¡ÇÒ ¶§ ¶³¾î¶ß¸° ¹Ù´ÃÀÌ ÆòÇ༱ Áß Çϳª¿Í ¸¸³¯ È®·üÀ» Á¤È®È÷ ±¸ÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÏ°í, ÀÌ È®·üÀ» Àü»ê½Ã´¿(simulation)À¸·Î ±¸ÇÏ´Â ÇÁ·Î±×·¥À» Àü»ê½Ã´¿ÀÇ ¹æ¹ý°ú visualizationÀ» °áÇÕÇÏ´Â ÇÑ ¿¹Á¦·Î º¸À̵µ·Ï ÇÏ°Ú´Ù.

 

2. ÀÌ·Ð

 

¸ÕÀú °¡Àå °£´ÜÇÑ °æ¿ì¸¦ »ý°¢ÇØ º¸ÀÚ. ÀÌ °æ¿ì¿¡¼­´Â ¹Ù´ÃÀÇ ±æÀ̵µ 1·Î ÀÌ¿ôÇÏ´Â ÆòÇ༱ »çÀÌÀÇ °£°Ýµµ 1·Î µÎ±â·Î ÇÏÀÚ. ±×·¯¸é ÀÌ °æ¿ì¸¦ ºÐ¼®Çϱâ À§ÇÏ¿© µÎ º¯¼ö¸¦ µµÀÔÇÏ¿©¾ß ÇÑ´Ù. Çϳª´Â ¹Ù´ÃÀÌ ÆòÇ༱°ú ÀÌ·ç´Â °¢ q¿Í ¹Ù´ÃÀÇ Á߽ɰú °¡Àå °¡±î¿î ÆòÇ༱ »çÀÌÀÇ °Å¸® D ÀÌ´Ù. q´Â 0ºÎÅÍ p±îÁö º¯Çϸç, ¹Ù´ÃÀÇ Á߽ɿ¡¼­ ÆòÇ༱µé¿¡ ÆòÇàÇÑ Á÷¼±À» ±×·Á ±× Á÷¼±°ú ¹Ù´ÃÀÌ ¸¸µå´Â °¢À» ÃøÁ¤ÇÏ¿© Á¤ÇÏ¸é µÈ´Ù. °Å¸® D ´Â ÀÌ¿ôÇÏ´Â µÎ ÆòÇ༱ »çÀÌÀÇ °Å¸®ÀÇ ¹Ýº¸´Ù´Â Ŭ ¼ö ¾ø´Ù. Áï D < 1/2(D = 1/2ÀÎ °æ¿ìµµ Æ÷ÇÔ)ÀÌ ¼º¸³ÇÑ´Ù. ¾Æ·¡ÀÇ ±×¸²ÀÌ ¹Ù·Î ÀÌ °æ¿ìÀÇ ÀϹÝÀûÀÎ °æ¿ì¸¦ ¼³¸íÇØ ÁÖ°í ÀÖ´Ù.

 

 

ÀÌ ±×¸²¿¡¼­ ¹Ù´ÃÀº ÆòÇ༱°ú ±³Â÷ÇÏÁö ¾Ê°í ÀÖ´Ù. ±×¸²¿¡¼­ º¸µíÀÌ ¹Ù´ÃÀº D °¡ D <= (1/2)sin(q)¸¦ ¸¸Á·ÇÒ ¶§¿¡¸¸ ÆòÇ༱°ú ±³Â÷ÇÏ°Ô µÈ´Ù. ÀÌ·± ±³Â÷°¡ ÀϾ È®·ü PÀº ¾î¶»°Ô µÉ±î? ¾Æ·¡ ±×¸²¿¡¼­¿Í °°ÀÌ D ¸¦ ¼¼·ÎÃà q¸¦ °¡·ÎÃàÀ¸·Î ³ªÅ¸³»¸é, ¹Ù´ÃÀ» ¹«ÀÛÀ§·Î Á¾ÀÌ À§¿¡ ¹Ù´ÃÀÇ (D,q)´Â 0< D <1 °ú 0 < q < p ÀÇ µÎ ºÎµîÈ£¸¦ µ¿½Ã¿¡ ¸¸Á·ÇÏ´Â Á÷»ç°¢Çü ¾È¿¡ ÀÖ´Ù. ÀÌ ¶§ ¹Ù´ÃÀÌ ÆòÇ༱°ú ±³Â÷ÇÏ·Á¸é D <= (1/2)sin(q)¸¦ ¸¸Á·ÇØ¾ß ÇϹǷΠ±³Â÷ÇÒ È®·üÀº ±×¸²¿¡¼­ Ä¥ÇØÁø ºÎºÐÀÇ ¸éÀû¿¡ ºñ·ÊÇÑ´Ù.

 

 

±×¸²¿¡¼­ Ä¥ÇØÁø ºÎºÐÀÇ ¸éÀûÀº ÇÔ¼ö f(q)=(1/2)sin(q)¸¦ 0 ºÎÅÍ p ±îÁö ÀûºÐÇÑ °ª°ú °°À¸¹Ç·Î 1 °ú °°´Ù. µû¶ó¼­ ¿ì¸®°¡ ±¸ÇÏ´Â È®·ü P´Â

 

P=1/( p/2)= 2/ p

¶Ç´Â

 

  p = 2/P                                                                                                                           

 

¸¦ ¸¸Á·ÇÑ´Ù. P°ªÀº ¾à .6366197·Î ¾Ë·ÁÁ® ÀÖ´Ù. µû¶ó¼­ ¸¸¾à ¹Ù´ÃÀ» ¹«¼öÈ÷ ¸¹ÀÌ ¶³¾î¶ß·Á p °ªÀ» ±¸ÇÑ´Ù¸é P´Â

 

P = (±³Â÷ÇÑ ¹Ù´ÃÀǼö)/(ÃÑ ¶³¾î¶ß¸° ¹Ù´Ã ¼ö)

 

¸¦ ³ªÅ¸³»¹Ç·Î

 

p =[ 2  X (ÃÑ ¶³¾î¶ß¸° ¹Ù´Ã ¼ö ) ] / (±³Â÷ÇÑ ¹Ù´ÃÀǼö)                                                                         (AAA)

 

Âü°í·Î ´Ù¸¥ µÎ °æ¿ì¿¡ ´ëÇØ ¾ð±ÞÇÏ¸é ´ÙÀ½°ú °°´Ù. ¹Ù´ÃÀÇ ±æÀ̸¦ L, ÀÌ¿ôÇÏ´Â ÆòÇ༱ »çÀÌÀÇ °Å¸®¸¦ K ¶ó Çϸé L<KÀÎ °æ¿ì¿¡´Â

               

P= 2L/(K p)

 

¸¦ ¸¸Á·ÇÑ´Ù. ±×·¯³ª L>KÀÎ °æ¿ì¿¡´Â Á» ´õ º¹ÀâÇÑ °á°ú°¡ ³ª¿Â´Ù°í ¾Ë·ÁÁ® ÀÖ´Ù.

 

3. Àü»ê ½Ã´¿

 

ÀÌÁ¦ ÀÌ·¯ÇÑ ¹Ù´Ã ¶³¾î¶ß¸®±â¸¦ ÀÌ¿ëÇÏ¿© pÀÇ ¼öÄ¡ °ªÀ» ±¸Çϴ  Àü»ê ½Ã´¿(Computer Simulation)À» À§ÇÑ VBÇÁ·Î ±×·¥À» ÀÛ¼ºÇØ º¸ÀÚ. ÀÌ ÇÁ·Î ±×·¥À» ½ÇÇàÇØ º¸¸é ½ÇÁ¦·Î ½ÇÇèÀ» ÇÏÁö ¾Ê°í computer·Î ½ÇÇè ÇÒ ¼ö ÀÖ´Â °¡¸¦ ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. ½ÇÁ¦·Î ¹Ù¸¦ ¶³¾î¶ß¸®±â¸¦ ½ÇÇèÇØ º¸·Á¸é ¹Ù´Ã°ú ÆòÇ༱À» ±×Àº Á¾ÀÌ µî ´Ù¾çÇÏ°Ô ÁغñÇÏ¿©¾ß ÇÏÁö¸¸ Àü»ê ½Ã´¿(¶Ç´Â Àü»ê ½ÇÇè:computer experiment)Àº ±×·¯ÇÑ ºÒÆí ¾øÀÌ ½ÇÇèÀ» ÀçÇöÇϹǷΠ¾ó¸¶³ª ºñ¿ë, ½Ã°£ ¹× Àΰ£ÀÇ ³ë·ÂÀ» Àý¾àÇÒ ¼ö ÀÖ´Â °¡¸¦ ¾Ë ¼ö ÀÖ´Ù.

Àü»ê ½Ã´¿¿¡¼­´Â ½ÇÁ¦·Î ÆòÇ༱ µéÀ» ¹«¼öÈ÷ ¸¹ÀÌ ±×À» ÇÊ¿ä°¡ ¾ø´Ù. ´Ü µÎ °³ÀÇ ÆòÇ༱À̸é ÃæºÐÇÏ´Ù. ¿Ö³ÄÇϸé ÆòÇ༱ »çÀÌÀÇ °Å¸®°¡ ¹Ù´ÃÀÇ ±æÀÌ¿Í °°À» ¶§´Â ½ÇÁ¦·Î °¡Àå °¡±î¿î ÆòÇ༱ µÎ °³¸¸ È®·üÀ» Á¤ÇÏ´Â µ¥ ÇÊ¿äÇϱ⠶§¹®ÀÌ´Ù. ¶Ç ÀÌ ½ÇÇè¿¡¼­ Áß¿äÇÑ °ÍÀº ¹Ù´ÃÀÇ Á߽ɿ¡¼­ °¡Àå °¡±î¿î ÆòÇ༱±îÁöÀÇ °Å¸® D À̹ǷΠ ¹Ù´ÃÀÇ Áß½ÉÀ» ÆòÇ༱°ú ÆòÇàÇÑ ¹æÇâÀ¸·Î ÆòÇàÀ̵¿ Çصµ ¹®Á¦°¡ »ý±âÁö ¾Ê´Â´Ù. µû¶ó¼­ ¸ðµç ¹Ù´ÃÀÇ Áß½ÉÀÇ À§Ä¡ Áß ÆòÇ༱¿¡ ÆòÇàÇÑ ¹æÇâÀÇ À§Ä¡´Â  Àü»ê ½ÇÇè¿¡¼­ ÆòÇ༱ºÐÀÇ Á߽ɿ¡¸¸ ÀÖ´Ù°í °¡Á¤ÇÏ¿©µµ ¹«¹æÇÏ´Ù. ´ÙÀ½ ±×¸²ÀÌ ¹Ù·Î ¹Ù´Ã ¶³¾î¶ß¸®±â¸¦ 76 ¹ø ÇßÀ» ¶§ ¶³¾îÁø ¹Ù´Ã (»¡°£»ö ¼±ºÐµé)°ú ±× ¶§ (AAA) ½ÄÀ¸·Î p(Pi) ¸¦ ¿¹ÃøÇÑ °ªÀ» ³ªÅ¸³»°í ÀÖ´Ù. ±×¸²¿¡¼­ °ËÁ¤»ö ¹è°æÀÇ µµÇ¥´Â ¹Ù´ÃÀÌ Çϳª ¶³¾îÁú ¶§ ¸¶´Ù p(Pi) °ªÀ» °è»êÇÏ¿© µµÇ¥·Î ³ªÅ¸³½ ±×¸²ÀÌ´Ù.

 

ÀÌÁ¦ ÀÌ·¯ÇÑ ÇÁ·Î±×·¥À» ±¸Ã¼ÀûÀ¸·Î ¼³¸íÇØ º¸ÀÚ. ÀÌ ÇÁ·Î±×·¥ÀÇ form file, project fileÀº ½ÇÇà fileÀº  °¢°¢ needle.frm, needle.vbp, needle.exeÀÌ´Ù. ¸ÕÀú À§ÀÇ ±×¸²°ú °°Àº formÀ» ±¸¼ºÇÏ´Â ¿©·¯ controlµéÀÇ ¼Ó¼º Ç¥¸¦ ÀÛ¼ºÇØ º¸ÀÚ.

°´Ã¼(control)

  ¼Ó¼º

 ¼³Á¤

   Æû

Name

Caption

BackColor

 FrmNeedle

 The Needle Program

 White

Label(°á°ú¸¦ ³ªÅ¸³»±â À§ÇÑ ·¹À̺í: ¡±´øÁø Ƚ¼ö¡± µîÀÌÀÖ´Â °÷)

Name

BackColor

Caption

lblResult

Gray

¾øÀ½

Line

(Á¾ÀÌ À§ÀÇ ÆòÇ༱ ù¹ø° °Í)

Name

BorderColor

BorderWidth

par1Line

Black

 5

Line

(Á¾ÀÌ À§ÀÇ ÆòÇ༱ ù¹ø° °Í)

Name

BorderColor

BorderWidth

par2Line

Black

 5

Picture Box(pÀÇ ¼öÄ¡ °ªÀ» ±×·¡ÇÁ·Î ³ªÅ¸³»±â À§ÇÑ °ËÁ¤»ö ¹ÙÅÁÀÇ Box)

Name

BackColor

BorderStyle

picResult

Black

1-Fixed Single

Line(Picture Box ¾ÈÀÇ x Ãà)

Name

BorderWidth

cxLine

1

Line(Picture Box ¾ÈÀÇ  yÃà)

Name

BorderWidth

cyLine

1

Line(Picture Box ¾ÈÀÇ  3.14 °ªÀ» ³ªÅ¸³»´Â ³ì»ö ÁÙ)

Name

BorderStyle

BoderColor

piLine

5-Dash-Dot-Dot

Green

Line(Picture Box ¾ÈÀÇ  6.28°ªÀ» ³ªÅ¸³»´Â ³ì»ö ÁÙ)

Name

BorderStyle

BoderColor

Pi2Line

5-Dash-Dot-Dot

Green

TextBox(Picture Box ¾ÈÀÇ  ¡°3.14¡±À» Ç¥½ÃÇÏ´Â TextBox )

Name

Text

txtPi

3.14

TextBox(Picture Box ¾ÈÀÇ  ¡°6.28¡±À» Ç¥½ÃÇÏ´Â TextBox )

Name

Text

txtPi2

6.28

Command

Name

Caption

cmdExit

Exit

Command

Name

Caption

cmdHdrs

100 DRS.

Command

Name

Caption

cmdOneDrop

1 Drop

 

´ÙÀ½À¸·Î ½ÇÁ¦·Î program source code¸¦ »ìÆ캸ÀÚ.

¸ÕÀú ÀÏ¹Ý ¼±¾ðºÎ¸¦ »ìÆ캸ÀÚ.

Option Explicit

Dim gTotal As Long

gTotalÀº Àü¿ªº¯¼ö·Î ¹Ù´ÃÀ» ¶³¾î¶ß¸° ÃÑ ¼ö¸¦ ³ªÅ¸³½´Ù.

Dim gCross As Long

  gCrossÀº Àü¿ªº¯¼ö·Î ÆòÇ༱°ú ±³Â÷ÇÑ ¹Ù´ÃÀÇ ¼ö¸¦ ³ªÅ¸³½´Ù

Dim Pi As Double

 Piµµ Àü¿ªº¯¼ö·Î (AAA) ½ÄÀ¸·ÎºÎÅÍ ¾òÀº pÀÇ ¼öÄ¡ °ªÀ» ³ªÅ¸³½´Ù.

 

´ÙÀ½À¸·Î Exit ButtonÀ» Click Çϸé ÇÁ·Î±×·¥À» ³¡³»´Â ÇÁ·Î±×·¥ code ´Â ´ÙÀ½°ú °°´Ù.

Private Sub cmdExit_Click()

End

End Sub

 

´ÙÀ½ code´Â ÇÁ·Î±×·¥ÀÌ ½ÃÇàµÇ¸é(Form_Load() ½Ã) °ð ¹Ù·Î ½ÃÇàµÇ´Â ¸í·Éµé·Î °¢ º¯¼ö °ªÀ» 0À¸·Î ÃʱâÈ­ÇÏ´Â ¸í·ÉµéÀÌ´Ù.

Private Sub Form_Load()

 gTotal = 0

 gCross = 0

 Pi = 0

End Sub

 

´ÙÀ½ moduleÀÌ ¹Ù·Î 1 Drop ButtonÀ» Click ÇÏ¸é ¼öÇàµÇ´Â ¸í·Éµé·Î ¹Ù´ÃÀÌ ÇÑ °³¾¿ ¼øÂ÷ÀûÀ¸·Î ¶³¾îÁö°í ±× ¶§¸¶´Ù ¹Ù´ÃÀÌ ÆòÇ༱°ú ±³Â÷ÇÏ´ÂÁö ¿©ºÎ¸¦ ÆÇ´ÜÇÏ¿© ¶³¾îÁø ¹Ù´ÃÀÇ ¼ö¸¦ ´©ÀûÇÏ°í, ±³Â÷ÇÑ ¹Ù´ÃÀÇ ¼ö¸¦ ´©ÀûÇÏ¿© (AAA) ½Ä¿¡ ÀÇÇØ PiÀÇ ¼öÄ¡ °ªÀ» °è»êÇÏ¿© lblLabel¿¡ ±× °á°ú¸¦ text·Î Ç¥½ÃÇÏ°í, Picture Box¿¡ ±× °á°ú¸¦ Graph·Î Ç¥½ÃÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.

Private Sub cmdOneDrop_Click()

¸ÕÀú º¯¼ö ÇÊ¿äÇÑ º¯¼öµéÀ» ¼±¾ðÇÑ´Ù.

Dim CX, CY, RX, RY, LX, LY As Long

Dim Th As Double

Dim DX, DY As Double

Dim Info As String

 

¸ÕÀú ÇÑ ¹Ù´ÃÀÌ ¶³¾îÁú ¶§ ±× ¹Ù´ÃÀÇ Á᫐ À§Ä¡¸¦ Á¤ÇÑ´Ù. ¹Ù´ÃÀÇ Áß½ÉÀÇ X ÁÂÇ¥(CX)´Â Ç×»ó µÎ ÆòÇà ¼±ºÐÀÇ Áß¾ÓÀÇ X ÁÂÇ¥¿Í ÀÏÄ¡½ÃŲ´Ù.

Áï ÆòÇ༱ºÐÀÇ ±æÀÌ (par1Line.X2 - par1Line.X1)¸¦ ¹ÝÀ¸·Î ³ª´©¾î À§¿¡ À§Ä¡ÇÑ ÆòÇ༱ºÐÀÇ ÇÑ ÂÊ À§Ä¡ÀÇ XÁÂÇ¥(par1Line.X1 )¸¦ ´õÇϸé CX¸¦ ±¸ÇÒ ¼ö ÀÖ´Ù.

CX = 0.5 * (par1Line.X2 - par1Line.X1) + par1Line.X1

¶Ç ¹Ù´ÃÀÇ Áß½ÉÀÇ Y ÁÂÇ¥(CY)´Â ÆòÇ༱ºÐ »çÀÌ ¾î´ÀÁ¡¿¡µµ ÀÓÀÇ·Î ¶³¾îÁú ¼ö ÀÖ´Ù. ÀÌ ¸»Àº VB°¡ ÁÖ´Â ³­¼ö Rnd(0°ú 1 »çÀÌÀÇ random number)¸¦ ÀÌ¿ëÇÏ¿© µÎ ÆòÇà ¼±ºÐ »çÀÌÀÇ °Å¸® (par2Line.Y1 - par1Line.Y1)¸¦ ÀÓÀÇ·Î ³ª´©´Â ÀÛ¾÷ÀÇ ÇÏ°í (par2Line.Y1 - par1Line.Y1)*Rnd·Î ÇÏ°í À̸¦ Int(  )·Î Á¤¼öÈ­ ÇÑ ´ÙÀ½ À§¿¡ À§Ä¡ÇÑ ÆòÇ༱ºÐÀÇ Y ÁÂÇ¥ par1Line.Y1 ´õÇØÁÖ¸é ÀÓÀÇÀÇ À§Ä¡¿¡ ¶³¾îÁø ¹Ù´ÃÀÇ Á᫐ À§Ä¡¸¦ Àü»ê ½Ã´¿ÇÒ ¼ö ÀÖ´Ù.

CY = Int(Rnd * (par2Line.Y1 - par1Line.Y1)) + par1Line.Y1

 

´ÙÀ½À¸·Î ¶³¾îÁø ¹Ù´ÃÀÇ ¹æÇâ°ú ÆòÇ༱ÀÌ ÀÌ·ç´Â °¢(Th)À» ¸ð»çÇϱâ À§ÇØ 0°ú p»çÀÌÀÇ ÀÓÀÇÀÇ °ªÀ» ¹«ÀÛÀ§·Î ±¸ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.

Th = Rnd * 3.141592

 

´ÙÀ½Àº ¹Ù´ÃÀÇ Á߽ɿ¡¼­ ¹Ù´ÃÀÇ ¾ç³¡ÀÇ À§Ä¡¸¦ °¡´ÆÇÏ´Â XÁÂÇ¥¿Í Y ÁÂÇ¥ÀÇ Àý´ë °ªÀ»  DX¿Í DY·Î °è»êÇÏ´Â ¸í·ÉÀÌ´Ù. ¿©±â¼­ À¯ÀÇÇÒ Á¡Àº ¹Ù´ÃÀÇ ±æÀÌ°¡ µÎ ÆòÇ༱ºÐÀÇ »çÀÌÀÇ ±æÀÌ(par2Line.Y1 - par1Line.Y1) ¿Í ÀÏÄ¡ÇÑ´Ù´Â »ç½ÇÀÌ´Ù.

DX = 0.5 * (par2Line.Y1 - par1Line.Y1) * Cos(Th)

DY = 0.5 * (par2Line.Y1 - par1Line.Y1) * Sin(Th)

 

ÀÌ °ªµé°ú ¹Ù´ÃÀÇ Áß½ÉÀÇ ÁÂÇ¥·ÎºÎÅÍ ¹Ù´ÃÀÇ ¾çÂÊ ³¡ÀÇ À§Ä¡ (RX,RY), (LX,LY)¸¦ °è»êÇÑ´Ù.

RX = CX + DX

RY = CY + DY

LX = CX - DX

LY = CY - DY

 

À̵é·ÎºÎÅÍ ¶³¾îÁø ¹Ù´ÃÀ» »¡°£»öÀÇ ¼±ºÐÀ¸·Î Ç¥½ÃÇÑ´Ù.

frmNeedle.Line (RX, RY)-(LX, LY), RGB(255, 0, 0)

 

ÀÌÁ¦ ¶³¾î¶ß¸° ¹Ù´ÃÀÇ ÃѼö¸¦ Çϳª Áõ°¡½ÃÅ°°í

gTotal = gTotal + 1

 

¹Ù´ÃÀÇ ¾çÂÊ ³¡ÀÇ Y ÁÂÇ¥ Áß Çϳª°¡ µÎ ÆòÇà ¼±ºÐÀÇ Y ÁÂÇ¥¿Í ºñ±³ÇÏ¿© ¹Ù´ÃÀÌ ÆòÇ༱°ú ±³Â÷ÇÏ´ÂÁö ¿©ºÎ¸¦ º¸¾Æ¼­

If RY > par2Line.Y1 Or LY < par1Line.Y1 Then

±³Â÷ÇÏ¸é ±³Â÷ÇÑ È½¼ö Çϳª ¿Ã¸°´Ù.

   gCross = gCross + 1

End If

 

ÀÌÁ¦ Pi °ªÀ» °è»êÇØ º¸ÀÚ.

If gCross = 0 Then

¸¸¾à ±³Â÷ÇÑ ´©Àû Ƚ¼ö°¡ 0 À̸é ÃßÁ¤ÇÏ´Â Pi °ªÀÌ 0ÀÌ´Ù.

    Pi = 0

¸¸¾à ±³Â÷ÇÑ ´©Àû Ƚ¼ö°¡ 0 ÀÌ ¾Æ´Ï¸é

Else

Pi = 2 * gTotal / gCross

·Î ÃßÁ¤ÇÏ´Â Pi °ªÀ» °è»êÇÒ ¼ö ÀÖ´Ù.

End If

 

°á°ú¸¦ ´ÙÀ½°ú °°ÀÌ Ç¥½ÃÇÑ´Ù. ¸ÕÀú picture box¾È¿¡ °è»êÇÑ Pi °ª¿¡ ¸Â´Â Á¶±×¸¸ ¿ø(Èò»ö±ò) ¿øÀ» ±×¸°´Ù. ¿øÀÇ Áß½ÉÀÇ X ÁÂÇ¥´Â ¶³¾î¶ß¸° ¹Ù´ÃÀÇ ¼ö¿¡ ºñ·ÊÇÏ¿© X À» µû¶ó ¿òÁ÷ÀÌ°Ô ÇÏ°í Áï gTotal * 10 + cyLin.X1À» X ÁÂÇ¥·Î ÇÑ´Ù. ¶Ç 3.14¿Í 6.28À» ³ªÅ¸³»´Â µÎ Á÷¼±ÀÇ Y ÁÂÇ¥ÀÇ Â÷ÀÌ piLin.Y1 - pi2Lin.Y1¸¦ 3.141592·Î µÎ¾î (piLin.Y1 - pi2Lin.Y1) * Pi / 3.141592·Î ±¸ÇÑ Pi °ªÀ» Ç¥½ÃÇ쵂 X ÃàÀÇ Y°ª cxLin.Y2¿¡¼­ ÀÌ °ªÀ» »©¼­ ¿øÀÇ Áß½ÉÀÇ Y °ªÀ¸·Î ÇÏ¿© ¿øÀ» ±×¸®¸é µÈ´Ù.

 picResult.Circle (gTotal * 10 + cyLin.X1, cxLin.Y2 - Int((piLin.Y1 - pi2Lin.Y1) * Pi / 3.141592)), 5, RGB(255, 255, 255)

 

´ÙÀ½À¸·Î lblResult¿¡ °è»êÇÑ °á°ú¸¦ ³ªÅ¸³½´Ù. ¸ÕÀú ¡°´øÁøȽ¼ö=¡± ¿¡ ´øÁø ÃѼö¸¦ ¹®ÀÚ·Î ³ªÅ¸³»´Â Str(gTotal)À» ¾²°í ´ÙÀ½À¸·Î ÁÙ ¹Ù²Ù°í(Chr(13)) , ¹Ù²Û ÁÙÀÇ Á¦ÀÏ ¾ÕÀ¸·Î °¡°í(Chr(10)) °£ ´ÙÀ½, "¸¸³­ Ƚ¼ö = " ¿¡ ¸¸³­ ÃѼö¸¦ ¹®ÀÚ·Î ³ªÅ¸³»´Â Str(gTotal)À» ¾²°í ´ÙÀ½À¸·Î Áٹٲٰí(Chr(13)) , ¹Ù²Û ÁÙÀÇ Á¦ÀÏ ¾ÕÀ¸·Î °¡°í(Chr(10)) °¡¼­, "Pi= " ¿¡ °è»êÇÑ Pi °ªÀ» ¹®ÀÚ·Î ³ªÅ¸³»´Â  Str(Pi)À» ¾²°í ÀÌ °á°ú¸¦ lblResultÀÇ Caption¿¡ º¸³»¸é µÈ´Ù.

Info = "´øÁø Ƚ¼ö = " + Str(gTotal) + Chr(13) + Chr(10)

Info = Info + "¸¸³­ Ƚ¼ö = " + Str(gCross) + Chr(13) + Chr(10)

Info = Info + "Pi= " + Str(Pi)

lblResult.Caption = Info

End Sub

 

´ÙÀ½Àº ¹Ù´ÃÀ» ÇѲ¨¹ø¿¡ 100°³¾¿ ¶³¾î¶ß¸®´Â ÇÁ·Î±×·¥À¸·Î 100 DRS. ButtonÀ» ClickÇÏ¸é µÈ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¹Ù´ÃÀÌ 100°³ ¶³¾îÁú ¶§ÀÇ ¸ð¾ç¸¸ ³ªÅ¸³»°í ÀÌ °á°ú·ÎºÎÅÍ Pi °ªÀ» °è»êÇÏ´Â °úÁ¤Àº ¾ø´Ù.

Private Sub cmdHrds_Click()

Dim Count As Single

Dim CX, CY, RX, RY, LX, LY As Long

Dim Th As Double

Dim DX, DY As Double

 

CX = 0.5 * (par1Line.X2 - par1Line.X1) + par1Line.X1 'Int(Rnd * (par1Line.X2 - par1Line.X1)) + par1Line.X1

 

 

Count = 1

Do While Count < 1001

CY = Int(Rnd * (par2Line.Y1 - par1Line.Y1)) + par1Line.Y1

 

Th = Rnd * 2 * 3.141592

DX = 0.5 * (par2Line.Y1 - par1Line.Y1) * Cos(Th)

DY = 0.5 * (par2Line.Y1 - par1Line.Y1) * Sin(Th)

RX = CX + DX

RY = CY + DY

 

LX = CX - DX

LY = CY - DY

 

frmNeedle.Line (RX, RY)-(LX, LY), RGB(0, 255, 0)

Count = Count + 1

Loop

frmNeedle.Cls

 

End Sub

¿¬½À¹®Á¦: ¹Ù´Ã100 °³¸¦ ÇѲ¨¹ø¿¡ ¶³¾î¶ß·ÈÀ» ¶§ÀÇ Pi °ªÀ» °è»êÇÏ¿© ±× °á°ú¸¦ Ç¥½ÃÇÏ´Â ÇÁ·Î±×·¥ °úÁ¤À» procedure
Private Sub cmdHrds_Click()
¿¡ »ðÀÔÇÏ¿© º¸¶ó.