برنامه‌ای بنویسید که با استفاده از 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

توسط پژوهشگر در 221 روز قبل ساعت 01:06
دسته بندی ها: C Plus Plus C Plus Plus for beginner
reyhaneh در 221 روز قبل ساعت 14:37

نکته: از 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 بررسی شوند.

گزارش

1 پاسخ

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

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