برآورد عدد π به روش مونت کارلو!

به ذهنم رسیده بود که یک پست بزار از یه کار ساده اما جالب! برآورد عدد معروف پی (π)، به روش مونت‌کارلو!
ایده اصلی توی این روش اینه که برای برآورد ما بیایم از شبیه‌سازی استفاده کنیم. یعنی با تولید اعداد شبه‌تصادفی برآورد می‌کنیم.
برای اینکار شما یک مربع به طول ضلع ۲r و یک دایره که توی مربع محاط شده به شعاع r  رو در نظر بگیرین.
circler

بعد ما بیایم نقاطی تصادفی با توزیع یکنواخت توی مربع انتخاب کنیم. برای این کار هم  وقتی به شکل زوج مرتبی بین تو فاصله‌ی [r,r-] نمونه بگیریم، یعنی اعدادی به شکل:
(X1,Y1);
(X2,Y2);
(X3,Y3);

(Xn,Yn)
به دست بیاریم که همه مولفه‌ها تو فاصله‌ی r تا r- هستن.

اون وقت واضحه‌ که نسبت تعداد نقاطی که توی دایره‌ی محاط شده‌ توی مربع میفتن، برآورد خوبی برای نسبت مساحت دایره به مساحت مربع خواهند بود، که این نسبت برابر می‌شه با:

{\Huge \frac{circle}{rectange} = \frac{\pi r^2}{4 r^2} = \frac{\pi}{4}}

خب برای پیاده‌سازی این روش ما می‌تونیم به طور تصادفی نقاطی رو توی مربع به طول ضلع انتخابی انتخاب کنیم و طبق رابطه‌ای که بالا نوشتیم، نسبت تعداد نقاطی که توی دایره میفتن به تعداد کل نمونه‌ی انتخابیمون برآورد خوبی برای عدد  \frac{\pi}{4} میشه! هر چی که تعداد نمونه‌ای که گرفتیم بیشتر بشه هم دقت ما در برآورد عدد π بیشتر می‌شود وبه عبارتی با میل کردن تعداد نمونه به بینهایت، نسبت تعداد نقاط در دایره به کل نمونه به عدد ۴/π میل می‌کنه! که با ضرب عدد حاصل در ۴ برآوردی برای π به‌دست میاد.
اینجا یه کد ساده‌ی R نوشتم که باهاش با تعداد نمونه‌ی دلخواه می‌شه با روش مونت کارلو برآوردی برای π به دست آورد:

دقت کنید! هر بار اجرای این کد عدد متفاوتی رو به شما می‌ده! چون شبیه‌سازی‌ مبتنی بر عدد تصادفیه! مثلا عدد‌های ۳٫۱۵۱۹۵، ۳٫۱۳۳۲۵ و ۳٫۱۴۳۴ سه‌تا نتیجه از سه شبیه‌سازی پشت سر هم بود که با این نمونه‌ی ۸۰۰۰۰تایی به دست آوردم!
نظراتتون باعث خوشحالیم خواهد بود. 🙂