یک برنامهٔ C++ بنویسید که با استفاده از std::srand از و روش مونتکارلو مقدار تقریبی عدد π را با N نمونهٔ تصادفی محاسبه کند.
8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:20 0.0
برای حل، ابتدا با std::srand(time(nullptr)) تولیدکنندهٔ اعداد تصادفی را مقداردهی اولیه کنید (نیاز به دارید)، سپس با std::rand() و تقسیم بر RAND_MAX دو عدد تصادفی در بازهٔ [0,1) بسازید و تعداد نقاطی که داخل ربعدایرهٔ واحد قرار میگیرند بشمارید. نسبت نقاط داخل به کل نمونهها را در 4 ضرب کنید تا تقریب π بهدست آید. نکات: برای دقت بهتر N را بزرگ انتخاب کنید و از نوعهای صحیح بزرگ (مانند long long) برای شمارش استفاده کنید؛ برای کاربردهای HPC میتوانید حلقهها را بعداً با OpenMP یا توزیع کار موازی کنید تا سرعت و دقت با نمونههای بیشتر افزایش یابد.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی مونت کارلو، با std::srand(time(nullptr)) مقداردهی اولیه تصادفی انجام بدهید و با std::rand() دو عدد تصادفی در بازه [0,1) بسازید. شمارش نقاط داخل ربع دایرهٔ واحد را با یک متغیر صحیح بزرگ مانند long long انجام دهید. نسبت این نقاط به کل نمونهها را در 4 ضرب کنید تا مقدار تقریبی π به دست آید. برای افزایش دقت و کارایی میتوانید N را بزرگتر بگیرید و از OpenMP یا توزیع کار برای موازی کردن حلقهها استفاده کنید.
گزارش