اعداد تصادفی در زبان C++

در اینجا روشهای مختلف تولید اعداد تصادفی در زبان C++ توضیح داده شده است:
روش 1: استفاده از تابع rand()
(کتابخانه استاندارد C)
این روش ساده و قدیمی برای تولید اعداد تصادفی است:
#include <iostream>
#include <cstdlib> // برای rand() و srand()
#include <ctime> // برای time()
int main() {
// مقداردهی اولیه تولیدکننده اعداد تصادفی با زمان فعلی
std::srand(std::time(0));
// تولید اعداد تصادفی
for (int i = 0; i < 5; ++i) {
int randomNum = std::rand(); // تولید یک عدد تصادفی
std::cout << “عدد تصادفی: “ << randomNum << std::endl;
}
// تولید یک عدد تصادفی در بازه [min, max]
int min = 1, max = 100;
int randomInRange = min + (std::rand() % (max – min + 1));
std::cout << “عدد تصادفی در بازه [” << min << “, “ << max << “]: “ << randomInRange << std::endl;
return 0;
}
نکات:
std::srand(std::time(0))
تولیدکننده اعداد تصادفی را مقداردهی اولیه میکند تا در هر اجرای برنامه مقادیر متفاوتی تولید شود.- تابع
rand()
ساده است اما ممکن است الگوهای پیشبینیپذیری تولید کند، زیرا از الگوریتم تولید خطی استفاده میکند.
روش 2: استفاده از کتابخانه <random>
(C++11 و جدیدتر)
این روش تولید اعداد تصادفی با کیفیت بالاتر و کنترل بیشتر بر روی توزیع اعداد را ارائه میدهد:
#include <iostream>
#include <random> // برای تولید اعداد تصادفی
int main() {
// ایجاد تولیدکننده اعداد تصادفی
std::random_device rd; // بذر تصادفی (ترجیحاً مبتنی بر سختافزار)
std::mt19937 gen(rd()); // الگوریتم Mersenne Twister
// توزیع یکنواخت در بازه [min, max]
int min = 1, max = 100;
std::uniform_int_distribution<> distrib(min, max);
// تولید اعداد تصادفی
for (int i = 0; i < 5; ++i) {
int randomNum = distrib(gen); // تولید عدد تصادفی
std::cout << “عدد تصادفی: “ << randomNum << std::endl;
}
return 0;
}
نکات:
std::random_device
: یک بذر تصادفی غیرقابل پیشبینی فراهم میکند (در صورت امکان مبتنی بر سختافزار).std::mt19937
: یک تولیدکننده اعداد تصادفی با کیفیت بالا مبتنی بر الگوریتم Mersenne Twister است.std::uniform_int_distribution
: توزیع یکنواخت اعداد را در بازه مشخص تضمین میکند.
کدام روش را باید استفاده کرد؟
- از
rand()
برای برنامههای ساده که کیفیت تصادفی بودن اهمیت چندانی ندارد، استفاده کنید. - از
<random>
برای برنامههای جدی مانند شبیهسازیها، بازیها، یا رمزنگاری که به کیفیت بالاتر و کنترل بیشتر نیاز دارند، استفاده کنید.
اگر برای کاربرد خاصی نیاز به مثال دارید، بگویید تا آن را برایتان آماده کنم! 😊
دیدگاهتان را بنویسید