±âº» ¼öÄ¡ Çؼ®

Monte Carlo Integral

¸ñÀû: 1.Gaussian Quadrature µîÀ¸·ÎºÎÅÍ °è»êÇÒ ¼ö ¾ø´Â ÀûºÐ °ªÀÇ ÃßÁ¤
        2. ´ÙÁß ÀûºÐ(2 Â÷¿ø ÀÌ»óÀÇ ÀûºÐ)¿¡ ´ëÇÑ Ã³¸® ¿ëÀÌ
        3. Èä³»³»±â(Àü»ê ½Ã´¿:simulation)ÀÇ ±âº»ÀÎ ³­¼ö(random number)¿¡ ´ëÇÑ ÀÌÇØ

 

 1. Random Number(¹«ÀÛÀ§¼ö, ³­¼ö)¶õ?

    ÁÖ¾îÁø ±¸°£¿¡¼­ ¾î¶² ƯÁ¤ÇÑ ¼ø¼­ ¾øÀÌ Æ¯Á¤ÇÑ Áֱ⠾øÀÌ ÀÓÀÇÀÇ ºÎºÐ ±¸°£¿¡ µé¾î°¥ È®·üÀÌ ÀÏÁ¤ÇÑ ¼öµéÀÇ ¿­.

    Random Number¸¦ ¸¸µå´Â ±âº» Algorithmµé

    i) computer ³»ºÎÀÇ cmos clockÀ» Àд ¹æ¹ý: CMOS clock timeÀ» ÀÏÁ¤ÇÑ °£°ÝÀ¸·Î Àо ÃÊ´ÜÀ§·Î ȯ»êÇÑ´Ù. ÀÌ ½Ã°£ÀÇ ¿­À»
        À̶óÇÏ°í, (0,1000) »çÀÌÀÇ ³­¼ö¿­À» ¾ò°í ½ÍÀ¸¸é, À» ÀÌ¿ëÇØ ³­¼ö¿­ À» ¾òÀ½.

   ii)middle-square method(von NeumannÀÌ Ã³À½À¸·Î Á¦¾È)
       (0,1000) »çÀÌÀÇ ³­¼ö¿­À» ¾òÀ»·Á¸é, óÀ½¿¡ 0°ú 1000»çÀÌÀÇ ÀÓÀÇÀÇ ¼ö¸¦ seed·Î ÇÑ ´ÙÀ½ ±× seed¸¦ Á¦°öÇÏ¿© ¾òÀº ¼öÀÇ °¡¿îµ¥ 3 ÀÚ¸® ¼ö¸¦
     ³­¼ö¿­ÀÇ Ã³À½ ¼ö·Î ÇÏ°í À̼ö¸¦ ´Ù½Ã Á¦°öÇÏ¿© ¾òÀº ¼öÀÇ °¡¿îµ¥ 3 ÀÚ¸® ¼ö¸¦ ´ÙÀ½ ¼ö·Î ÇÏ´Â ¹æ¹ýµîÀ» °è¼ÓÇÏ¿© ³­¼ö¿­À» ¾òÀ½.
     ¿¹) 267(seed) -> 267^2=71829 -> 182(³­¼ö¿­ÀÇ Ã¹ ¹ø° ¼ö) -> 182^2 =33124 ->312(³­¼ö¿­ÀÇ µÎ ¹ø° ¼ö) ->.....

  ii) n¹ø° ³­¼ö¸¦ , n+1¹ø° ³­¼ö¸¦ À̶ó ÇßÀ» ¶§ (0, m)»çÀÌÀÇ ³­¼ö¿­À» ½Ä

             

    À» ÀÌ¿ëÇØ ¾ò´Â ¹æ¹ý.

      ÃÖÁ¾ÀûÀ¸·Î´Â i), ii), iii) µîÀÇ ¹æ¹ýÀ¸·Î ¾òÀº (0, m)»çÀÌÀÇ ³­¼ö¿­ À» ÀÌ¿ëÇØ º»ÀÎÀÌ ¿øÇÏ´Â ±¸°£ (a, b) »çÀÌÀÇ ³­¼ö¿­Àº ¼ö½Ä

              

À» ÀÌ¿ëÇØ ±¸ÇÒ ¼ö ÀÖ´Ù.

    Pseudo Random Number¿Í seed
      ¾Æ¹«¸® ÁÁÀº algorithmÀ» »ç¿ëÇØ ³­¼ö¿­À» ¸¸µé´õ¶óµµ, ¾ðÁ¦ ÁֱⰡ »ý±â°Å³ª ¶Ç´Â ³­¼ö ÀÚü°¡ ¹Ýº¹ÇÏ¿© ³ªÅ¸³ª°Å³ª, ƯÁ¤ÇÑ ºÎºÐ ±¸°£¿¡ ³­¼ö°¡ ¸¹ÀÌ ¸ðÀδٵçÁö ÇÏ´Â Çö»óÀÌ ¹ß»ýÇÒ Áö ¸ð¸¥´Ù. ÀÌ·¯ÇÑ Àǹ̿¡¼­ ¿ì¸®°¡ ¸¸µç ³­¼ö¿­À» ÀÇ»ç ³­¼ö(pseudo random number)¿­À̶ó ºÎ¸¥´Ù. ¶Ç °°Àº ³­¼ö ¹ß»ý algorithmÀ» ¹Ýº¹Çؼ­ »ç¿ëÇÒ ¶§, ³ªÅ¸³ª´Â ³­¼ö¿­Àº seed(Áï ³­¼ö¿­À» ¸¸µé ¶§ µµÀÔÇϴ óÀ½ÀÇ ¼ö)°¡ °°À¸¸é Ç×»ó °°Àº ³­¼ö¿­ÀÌ ¸¸µé¾î Áø´Ù. µû¶ó¼­ ¾î¶² ³­¼ö¿­À» ÀÌ¿ëÇØ Àü»ê ½Ã´¿À» ÇÒ ¶§, ÀÌ Àü»ê ½Ã´¿À» ¹Ýº¹Çؼ­ Æò±ÕÇÏ¿© °á°ú¸¦ ¾ò´Â´Ù¸é, ¹Ýº¹ÇÒ ¶§ ¸¶´Ù, Ç×»ó ´Ù¸¥ seed¿¡¼­ Ãâ¹ßÇå ³­¼ö¿­À» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù. ÀÌ·¯ÇÑ Àǹ̿¡¼­ seed¸¦ ÈçÈ÷ Àü»ê½Ã´¿À» ½ÃÀÛÇÏ´Â ½Ã°¢À» ÃÊ´ÜÀ§·Î ȯ»êÇÏ¿© »ç¿ëÇÏ°ï ÇÑ´Ù.

    Visual Basic¿¡¼­ Pseudo Random NumberÀÇ ¹ß»ý
      VB¿¡¼­´Â library functionÀ¸·Î ³­¼ö ¹ß»ý ÇÔ¼ö¸¦ Á¦°øÇÏ°í ÀÖ´Ù. ¸ÕÀú Seed¸¦ randomÇÏ°Ô Á¦°øÇÏ´Â ¹æ¹ýÀº

       "randomize"

¶ó´Â statement¸¦ ÁÖ¸é µÈ´Ù. ¸¸¾à ¾î¶² ƯÁ¤ÇÑ ¼ö¸¦ seed·Î Áֱ⸦ ¿øÇÒ ¶§¿¡´Â

       "randomize(ƯÁ¤ÇÑ ¼ö)"
¸¦ ÁÖ¸é µÈ´Ù. ¸¸¾à randomize¸¸ ÁÖ¸é VB°¡ TimerÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿© ½Ã°¢À» seed·Î ÅÃÇÏ´Â ÀÛ¾÷À» ÇÑ´Ù. Timer ÇÔ¼ö´Â ÀÚÁ¤¿¡¼­ºÎÅÍ ÇöÀç ½Ã°¢±îÁöÀÇ ½Ã°£À» ÃʷΠȯ»êÇÏ¿© ÁØ´Ù. Seed¸¦ randomize·Î randomÈ­ ½ÃŲ ÈÄ ³­¼ö ¿­À» ¾ò´Â ¹æ¹ýÀº "Rnd" statement¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù. "Rnd"´Â ±¸°£ (0,1) »çÀÌÀÇ ³­¼ö¸¦ ÁØ´Ù. µû¶ó¼­ ƯÁ¤ÇÑ ±¸°£ (a,b)ÀÇ ³­¼ö¿­À» ¾ò´Â ¹æ¹ýÀº        

       a + (b-a)*Rnd

¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù.

    2. Monte Carlo Integral    

         ¸¦ ³­¼ö¿­À» »ç¿ëÇؼ­ °è»êÇÏ´Â ¹æ¹ý.

      Hit and Miiss Method

       

i) °¡·Î°¡ (b-a), ¼¼·Î°¡ hÀÎ Á÷ »ç°¢ÇüÀ» ±×¸°´Ù.
ii) ±¸°£ (a,b)¾È¿¡ ÀÖ´Â ³­¼ö Çϳª¿Í, (0,h) ±¸°£ ¾ÈÀÇ ³­¼ö Çϳª¸¦ ¹ß»ý½ÃÄѼ­ À» ¸¸Á·½ÃÅ°¸é Hit ¼ö¸¦ Çϳª Áõ°¡½ÃÅ°°í, ¾Æ´Ï¸é Miss ¼ö¸¦ Çϳª Áõ°¡½ÃŲ´Ù.
iii) ii)ÀÇ °úÁ¤À» ÃæºÐÇÑ È½¼ö N¹ø ¹Ýº¹ÇÑ´Ù.

 ±×·¯¸é ÀûºÐ °ªÀº

        

·Î  ÃßÁ¤ÇÒ ¼ö ÀÖ´Ù.

 

    Important Sampling Method
±¸°£ (a,b)¾È¿¡ ÀÖ´Â ³­¼ö¸¦ ÃæºÐÇÑ È½¼ö N ¹ø ¹ß»ý ½ÃÄÑ ±× ³­¼ö ¿­À»
À̶ó Çϸé ÀûºÐ °ªÀº

                  

·Î °è»êÇÒ ¼ö ÀÖ´Ù. ±× ÀÌÀ¯´Â ÀÌ ÁøÁ¤ÇÑ Àǹ̿¡¼­ ³­¼ö¿­ À̶ó¸é N ÀÌ ¸Å¿ì Ŭ ¶§ µéÀÌ ±¸°£ (a,b)¿¡ °ñ°í·ç ºÐÆ÷ÇÒ °ÍÀ̸ç, µû¶ó¼­ ÀÓÀÇÀÇ Á¡ÀÌ Â÷ÁöÇÏ´Â ºÎºÐ ±¸°£ÀÇ ¹üÀ§°¡ (b-a)/NÀÌ µÉ °ÍÀ̱⠶§¹®ÀÌ´Ù.

  3. Muilti-Dimensional Integral

´ÙÁß ÀûºÐ

              

¿Í °°Àº ÀûºÐÀÇ ¼öÄ¡°ªÀº ´Ü¼øÈ÷ ÀÏÂ÷¿ø ÀûºÐÀÇ algorithmÀ» ÀÌ¿ëÇÏ¿© ÀûºÐÇϱ⿡´Â ¸Å¿ì ¾î·Á¿î Á¡ÀÌ ¸¹´Ù. ƯÈ÷ ÀûºÐÀÇ ÇÏÇÑ, »óÇѵéÀÌ ÀÏÁ¤ÇÑ °ªÀÌ ¾Æ´Ï¶ó, µî°ú °°ÀÌ ´ÙÀ½¿¡ ÀûºÐ µÉ º¯¼öÀÇ ÇÔ¼öÀÎ °æ¿ì¿¡´Â ƯÈ÷ ¾î·Æ´Ù. ÀÌ·² ¶§ ¸Å¿ì ¿ëÀÌÇÏ°Ô ÀûºÐÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¹Ù·Î Monte Carlo IntegralÀÌ´Ù. ¿©±â¼­µµ importance sampling method¸¦ ÀÌ¿ëÇÏ¿© ÀûºÐÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù. ±¸°£ (a,b)¾È¿¡ ÀÖ´Â ³­¼ö¸¦ ÃæºÐÇÑ È½¼ö N ¹ø ¹ß»ý ½ÃÄÑ ±× ³­¼ö ¿­À» À̶ó ÇÏ°í, ±¸°£ (c,d)¾È¿¡ ÀÖ´Â ³­¼ö¸¦ ÃæºÐÇÑ È½¼ö M ¹ø ¹ß»ý ½ÃÄÑ ±× ³­¼ö ¿­À» À̶ó ÇÏ°í, ±¸°£ (e,f)¾È¿¡ ÀÖ´Â ³­¼ö¸¦ ÃæºÐÇÑ È½¼ö L¹ø ¹ß»ý ½ÃÄÑ ±× ³­¼ö ¿­À» À̶ó Çϸé ÀûºÐ °ªÀº

               

              

À¸·ÎºÎÅÍ °è»êÇÒ ¼ö ÀÖ´Ù.

    4. ¹Ýº¹¹ý(iteration method)°úÀÇ Á¶È­
     
  i) Monte Carlo ÀûºÐ¹ý¿¡¼­ÀÇ Á¤È®µµÀÇ ÃßÁ¤Àº ³­¼ö ¹ß»ý Ƚ¼ö¿Í ÀûºÐ °á°ú °ªÀÇ »ó°ü °ü°è¸¦ ±¸ÇÏ¸é µÈ´Ù. °¡·É ³­¼ö¸¦ 100 ¹ø ¹ß»ý ½ÃÄ×À» ¶§ÀÇ ÀûºÐ °ªÀÌ 9.576ÀÌ°í 1000 ¹ø ¹ß»ý ½ÃÄ×À» ¶§ÀÇ ÀûºÐ °ªÀÌ 9.432ÀÌ°í, 10000 ¹ø ¹ß»ý ½ÃÄ×À» ¶§ÀÇ ÀûºÐ °ªÀÌ 9.441ÀÌ°í, 100000 ¹ø ¹ß»ý ½ÃÄ×À»¶§ÀÇ ÀûºÐ °ªÀÌ 9.447À̶ó¸é ÀûºÐ °ªÀÌ ¼Ò¼öÁ¡ ÀÌÇÏ 2 °ÀÚ¸®±îÁö Á¤È®È÷ ±¸ÇÏ·Á¸é Àû¾îµµ ³­¼ö¸¦ 10000 ¹øÀÌ»ó ¹ß»ý½ÃÄÑ¾ß  ÀûºÐ °ªÀÌ Á¦´ë·Î ³ª¿Â´Ù°í ÃßÁ¤ÇÒ ¼ö ÀÖ´Ù.
      ii)Àΰ£À̳ª computer°¡ ÁÖ´Â ÇÑ°è ¶§¹®¿¡ ³­¼ö ¹ß»ýȽ¼öÀÇ ÃÖ´ëÄ¡°¡ N ¹øÀ¸·Î ÇÑÁ¤µÈ´Ù¸é, N ¹øÀ» ÀüºÎ¸¦ 1 ¹øÀÇ ÀûºÐ °ª ÃßÁ¤¿¡ ´Ù »ç¿ëÇÒ °ÍÀÌ ¾Æ´Ï¶ó, Ƚ¼ö¸¦ k·Î ³ª´©¾î ³­¼ö ¹ß»ý Ƚ¼ö°¡ N'=N/kÀÎ Monte Carlo IntergralÀ» k ¹øÇÏ¿© ±× °á°ú ÀûºÐ °ªÀ» Æò±ÕÇÏ´Â °ÍÀÌ ´õ Á¤È®ÇÏ´Ù. (Áï »ó´ë¿ÀÂ÷°¡ ·Î ÁÙ¾îµéÀ½.)
      µû¶ó¼­ i)°ú ii)ÀÇ ¹æ¹ýÀ» Àû´çÈ÷ Á¶È­ÇÏ´Â °ÍÀÌ ¸Å¿ì Áß¿äÇÔ.

   5. Monte Carlo IntegralÀÇ ±¸Çö

       ÀÌÁ¦ VB ÇÁ·Î±×·¥À¸·Î ÀûºÐ °ª

             

Mpnte Carlo IntegralÇÏ´Â ÇÁ·Î±×·¥À» ÀÛ¼ºÇØ º¸ÀÚ. ¿©±â¼­´Â Hit and Miss method¸¦ »ç¿ëÇØ º¸ÀÚ. ¸ÕÀú ÀÌ ÇÁ·Î±×·¥À» runÇÏ´Â °úÁ¤ÀÇ formÀÇ ¸ð¾çÀ» º¸¸é ´ÙÀ½°ú °°´Ù.

         

ÀÌ ±×¸²Àº BuffonÀÇ ¹Ù´Ã ¶³¾î ¶ß¸®±â ÇÁ·Î±×·¥À» ±¸ÇöÇÒ ¶§¿Í form°ú ºñ½ÁÇÑ ÇüŸ¦ °®°í ÀÖ´Ù. ÀÌ ÇÁ·Î±×·¥ÀÇ form file, project fileÀº ½ÇÇà fileÀº  °¢°¢ MonInt.frm, MonInt.vbp, MonInt.exe¿Í °°´Ù.
   ÀÌÁ¦ ÀÌ ÇÁ·Î±×·¥À» ±¸Ã¼ÀûÀ¸·Î »ìÆ캸ÀÚ. formÀÇ controlÀÇ ¼Ó¼º Áß Picture BoxÀÎ picResult¾È¿¡ ÀÖ´Â ¸ðµç controlÀº
BuffonÀÇ ¹Ù´Ã ¶³¾î ¶ß¸®±â ÇÁ·Î±×·¥¿¡¼­ÀÇ picResult¾È¿¡ ÀÖ´ø controlÀÇ ¼Ó¼º°ú µ¿ÀÏÇϹǷΠ»ý·«ÇÑ´Ù. ÀÌÁ¦ ³ª¸ÓÁö controlµéÀ» À§ÇÑ ¼Ó¼ºÇ¥¸¦ ÀÛ¼ºÇØ º¸ÀÚ.

      

   °´Ã¼

 ¼Ó¼º

 ¼³Á¤

 form

 Name
Caption
Back Color

frmMonInt
The Monte Carlo Integral
White

 label

Name

lblResult

 line

Name

linXax(xÃà)

 line

Name

linYax(yÃà)

 command

Name
Caption

cmdHitMiss
Hit, Miss

 command

Name
Caption

cmdImpo
Imp. Samp 

 command

Name
Caption

cmdExit
Exit

´ÙÀ½À¸·Î ÇÁ·Î ±×·¥ code¸¦ ÀÛ¼ºÇØ º¸ÀÚ.

¸ÕÀú ÀÏ¹Ý ¼±¾ðºÎ¸¦ º¸¸é º¯¼ö¸¦ ¸ðµÎ ¼±¾ðÇÑ´Ù´Â
Option Explicit
°¡ ÀÖ°í, ´ÙÀ½À¸·Î ³­¼ö ¦À» ¹ß»ýÇÏ´Â ÃÑ È½¼ö¸¦ ³ªÅ¸³»´Â Àü¿ª º¯¼ö, gTotal°ú ±× Áß hitÇÑ ¼ö¸¦ ³ªÅ¸³»´Â gIn°ú °á°ú ÀûºÐ °ªÀÇ 4 ¹è¸¦ ³ªÅ¸³»´Â PiµîÀÌ Àü¿ª º¯¼ö·Î ¼±¾ðµÈ´Ù.
Dim gTotal As Long
Dim gIn As Long
Dim Pi As Double
 ¶Ç lblResult¶ó´Â label Box¿¡ °á°ú¸¦ Ç¥½ÃÇÒ ¹®ÀÚ¿­ º¯¼ö·Î Info¸¦ Àü¿ªº¯¼ö·Î ¶Ç ¼±¾ðÇÑ´Ù.
Dim Info As String

¶Ç End ButtonÀ» clickÇßÀ» ¶§´Â ÇÁ·Î±×·¥À» ³¡³»´Â procedure°¡ ÀÖ´Ù.
Private Sub cmdExit_Click()
End
End Sub

´ÙÀ½À¸·Î ÇÁ·Î±×·¥ÀÌ ½ÃÀ۵Ǿî formÀÌ ¶ã ¶§ gTotal°ú, gInÀ» ÃʱâÈ­ ÇÏ´Â ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°´Ù.
Private Sub Form_Load()
gTotal = 0
gIn = 0
End Sub

´ÙÀ½À¸·Î Hit and Miss¸¦ ±¸ÇöÇÏ´Â ÇÁ·Î±×·¥Àº Hit, Miss¶ó´Â buttonÀ» clickÇßÀ» ¶§ ½ÃÇàµÇ´Âµ¥ ±× source code¸¦ ÀÌÁ¦ »ìÆ캸ÀÚ.

Private Sub cmdHitMiss_Click()
¸ÕÀú ÇÊ¿äÇÑ º¯¼öµéÀ» ¼±¾ðÇÏ°í

Dim Count As Long
Dim CX, CY As Long
Dim Th As Double
Dim DX, DY As Double

ÁÂÇ¥ Áß½ÉÀ» ¿øÁ¡À¸·Î ÇÏ´Â ¹Ý°æ 2000 twibÀÎ 1/4 ¿øÀ» »¡°£»öÀÎ ¿øÀ» ±×¸°´Ù.
"circle (x,y), R, color, ½ÃÀÛ angle, ³¡³ª´Â angle"À̶ó´Â ¸í·É¿¡¼­ ½ÃÀÛ angle=0, ³¡³ª´Â angle=pi/2 = 1.5706À¸·Î ÁÖ¸é 1/4 ¿øÀ» ±×¸®°Ô µÈ´Ù.
frmMonInt.Circle (linXax.X1, linXax.Y1), 2000, RGB(255, 0, 0), 0, 1.5706

´ÙÀ½À¸·Î ³­¼ö ¹ß»ýÀÇ seed¸¦ ¹Ù²Ù°í
Randomize
ÀÌÁ¦ ³­¼ö ¦ÀÇ ¹ß»ý Ƚ¼ö¸¦ monitorÇÏ´Â Count¶õ º¯¼ö¸¦ 0À¸·Î ÃʱâÈ­ ÇÏ°í
Count = 0
Do While ±¸¹®À» ÀÌ¿ëÇÏ¿© ³­¼ö ¦À» 10000 ¹ø ¹ß»ý½ÃÄÑ Monte Carlo IntegralÀ» ÇÑ´Ù.
Do While Count < 10001
³­¼ö ¹ß»ý Ƚ¼ö¸¦ Çϳª ¿Ã¸®°í
Count = Count + 1

ÀÌÁ¦ 0 °ú 1 »çÀÌÀÇ ³­¼ö µÎ °³¸¦ ¹ß»ý ½ÃÄÑ °¢°¢ x(DX)¿Í y(DY)ÀÇ Â¦À¸·Î ÇÑ´Ù.
DX = Rnd
DY = Rnd

´ÙÀ½À¸·Î ÀÌ µÎ¼ö¸¦ Á¦°öÇÏ¿© ´õÇÏ¿© Th¶ó µÐ´Ù.
Th = DX * DX + DY * DY

ÀÌÁ¦ ³­¼ö ¹ß»ýȽ¼ö¸¦ Çϳª Áõ°¡ ½ÃÅ°°í
gTotal = gTotal + 1

ÀÌ µÎ¼ö°¡ ÇÔ¼öÀÇ À§¿¡ ÂïÈ÷´Â Áö ¾Æ·¡¿¡ Âï±â À§ÇØ ±×¸²¿¡¼­ DX¿Í DY¿¡ ÇØ´çÇÏ´Â À§Ä¡ CX, CY·Î ±¸ÇØ º¸ÀÚ. ±×¸²¿¡¼­ ¹Ý°æ 2000 twibÀÌ ½ÇÁ¦ 1·Î ȯ»êµÇ°í, ¿øÁ¡ÀÇ x ÁÂÇ¥´Â ±×¸²¿¡¼­ linXax.X1À̹ǷΠCX´Â
CX = Int(DX * 2000 + linXax.X1)
ÀÌ µÇ°í °°Àº ¹æ¹ýÀ¸·Î
CY = Int(linXax.Y1 - DY * 2000)
ÀÌ µÈ´Ù. ÀÌÁ¦ ±×¸²¿¡ ³­¼ö ¹ß»ýÀ¸·ÎºÎÅÍ ¾òÀº ÀÓÀÇÀÇ Á¡ÀÌ ÁÖ¾îÁø ÇÔ¼ö ¾Æ·¡¿¡ ÀÖ´ÂÁö ¾ø´ÂÁö¸¦ ÆÇ´ÜÇÏ¿©
If Th <= 1 Then
ÀÖÀ¸¸é Hit Ƚ¼ö¸¦ Çϳª Áõ°¡½ÃÅ°°í
   gIn = gIn + 1
HitÇÑ Ç¥½Ã·Î QBColor(1)À¸·Î Á¡À» Âï°í
  frmMonInt.PSet (CX, CY), QBColor(1)
MissÇßÀ¸¸é
Else
MissÇÑ Ç¥½Ã·Î QBColor(7)À¸·Î Á¡À» Âï°í 
frmMonInt.PSet (CX, CY), QBColor(7)
End If

Loop

ÀÌÁ¦ ÀÌ·± ÀÏÀ» 10000¹ø ÇßÀ» ¶§ ¸¶´Ù ÀûºÐ °ªÀ» ±¸Çϴµ¥ ¿ì¸®°¡ »ý°¢ÇÑ °¡»óÀÇ 4 °¢ÇüÀÇ ³ÐÀÌ°¡ 1À̹ǷΠ±¸ÇÏ´Â ÀûºÐ °ªÀº 1*gIn / gTotalÀε¥ ÀÌ °ªÀ» 4 ¹èÇϸé Pi °ªÀÌ µÇ¾î¾ß ÇϹǷÎ
Pi = 4 * gIn / gTotal
¿Í °°ÀÌ Pi°ªÀ» °è»êÇÑ´Ù. ±× °á°ú¸¦ needle program¿¡¼­¿Í ºñ½ÁÇÑ ¹æ¹ýÀ¸·Î picResult¿¡ ±×¸²À» ±×¸®°í, lblResult¿¡ ¹®ÀÚ¿­·Î Ç¥½ÃÇÑ´Ù.
picResult.Circle (gTotal / 100 + cyLin.X1, cxLin.Y2 - Int(720 * Pi / 3.141592)), 20, RGB(255, 255, 255)
Info = "´øÁø Ƚ¼ö = " + Str(gTotal) + Chr(13) + Chr(10)
Info = Info + "HitÇÑ È½¼ö=" + Str(gIn) + Chr(13) + Chr(10)
Info = Info + "Pi= " + Str(Pi)
lblResult.Caption = Info

End Sub

¿¬½À¹®Á¦:1. À» ÀÌ¿ëÇÏ¿© pi°ªÀ» Monte Carlo IntergralÀÇ Important Sampling Method¸¦ ÀÌ¿ëÇÏ¿© ±¸ÇÏ´Â source code¸¦ À§ÀÇ VBÇÁ·Î±×·¥ Áß "Private Sub cmdImpo_Click()" procedure¿¡ »ðÀÔÇ϶ó.

             2. ¹Ý°æÀÌ 1 ÀÎ ±ÕÀÏÇÑ ±¸ÇüÀÇ °­Ã¼ ³»ºÎ¿¡ ±¸ÀÇ Á߽ɰú ÀÏÄ¡ÇÏ´Â Áß½ÉÀ» °®´Â ¸ð¼­¸®ÀÇ ±æÀÌ°¡ 1/2ÀÎ Á¤À°¸éü¸¦ ÆÄ ³»¾ú´Ù. ÀÌ ¶§ Æij½ Á¤À°¸éüÀÇ ÇÑ ´ë°¢¼±À» Áß½ÉÃàÀ¸·Î ÇÏ¿© ÀÌ ¸ð¾çÀÇ °ü¼º ¸ð¿ì¸àÆ®¸¦ Monte Carlo IntegralÀ» ÀÌ¿ëÇØ ±¸Ç϶ó.