یک برنامهٔ C++ بنویسید که با استفاده از روش مونتکارلو و تابع std::srand مقدار π را با تولید N نقطهٔ تصادفی تقریب بزند.
7.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:43 0.0
برای حل، از و std::srand برای مقداردهی اولیهٔ تولیدکنندهٔ اعداد تصادفی (مثلاً با time(0) از ) استفاده کنید و با std::rand() / RAND_MAX عددی یکنواخت در بازه [0,1) بسازید؛ برای هر نقطه بررسی کنید آیا داخل دایرهٔ واحد قرار دارد و نسبت نقاط داخل را ضرب در 4 کنید تا تقریب π بهدست آید. نکات: از نوع دادهٔ مناسب برای شمارندهها استفاده کنید، N بزرگتر موجب دقت بیشتر میشود، و برای سرعت (HPC) میتوانید بعدها کار را به بخشهای مستقل تقسیم یا با -O2 کامپایل کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای تولید نقاط تصادفی از std::srand(time(0)) استفاده کنید و با std::rand() / RAND_MAX اعداد یکنواخت در [0,1) بسازید. برای هر نقطه x و y در [0,1) بررسی کنید که x*x + y*y <= 1 باشد تا داخل دایره واحد باشد و نسبت نقاط داخل را ضرب در 4 کنید تا مقدار π به دست آید. برای شمارندهها از نوع دادهٔ مناسب مانند unsigned long long استفاده کنید و هرچه N بزرگتر باشد دقت بهتر میشود. اگر به HPC فکر میکنید، میتوانید با تقسیم کار یا کامپایل با -O2 کارایی را افزایش دهید و به نکتهٔ thread-safetyِ rand() نیز توجه کنید.
گزارش