یک برنامهٔ 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 کامپایل کنید.

توسط پژوهشگر در 201 روز قبل ساعت 03:43
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 201 روز قبل ساعت 05:26

برای تولید نقاط تصادفی از 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() نیز توجه کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری