برنامهای بنویسید که با استفاده از std::srand (از هدر ) و تابع rand تعداد N نقطه تصادفی در مربع [0,1]×[0,1] تولید کرده و با روش مونتکارلو مقدار π را تقریب بزند و نتیجه را چاپ کند.
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:06 0.0
برای حل: ابتدا با std::srand یک دانه تصادفی (مثلاً std::srand(static_cast(std::time(nullptr)))) تنظیم کنید، سپس برای هر یک از N تکرار دو عدد تصادفی بین 0 و 1 با rand()/double(RAND_MAX) بسازید و اگر x*x + y*y
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته: از std::srand برای دانهزنی استفاده کنید و آن را با std::time(nullptr) مقداردهی کنید تا هر اجرای برنامه دانه متفاوتی داشته باشد. برای تولید هر نقطه دو مقدار x و y در [0,1] با x = rand() / double(RAND_MAX) و y = rand() / double(RAND_MAX) بسازید. اگر x*x + y*y <= 1 بود، شمار نقاط درون دایره را افزایش داده و π را با 4.0 * count_inside / N تخمین بزنید و نتیجه را چاپ کنید. اگر N بزرگ است، کارایی ممکن است پایین بیاید و بهتر است بهبودهایی مثل استفاده از توابع بهینهتر یا روشهای سریعتر RNG بررسی شوند.
گزارش