سلام
می خواستم ببینم تابعی هست که بین دو عدد خاص که قرار است از ورودی گرفته شود مقداری تصادفی بدهد یا اگر نیست چگونه می شه چنین تابعی نوشت
با تشکر
علیرضا
یک تابع اصلی در stdlib.h یا cstdlib.h به نام ()rand معرفی شده که یک عدد صحیح تصادفی بین 0 و
RAND_MAX بر می گرداند که RAND_MAX یک عدد صحیح از قبل تعریف شده بزرگ است (مثلا 32767 یا
2147483647).
اصولا برای آنکه مقدار خروجی ()rand از عددی بیشتر نشود، از عملگر باقیمانده تقسیم (%) استفاده می کنند.
مثلا مقدار (rand() % 101) همواره عددی بین 0 و 100 خواهد بود (ممکن است خود 0 و 100 هم باشد).
برای آنکه در هر بار اجرای برنامه، اعداد تصادفی متفاوتی ایجاد شود، بایستی تابع ()srand را به زمان سنج سیستم
مرتبط کرد :
اصولا این کد سطر بالا را در ابتدای تابع ()main برنامه قرار می دهند تا یکبار اجرا شود.
بر اساس تابع ()rand دو تابع ()
random ارائه می کنم که بین دو عدد a و b (معادل [a, b] ) اعداد تصادفی
برگرداند، تفاوت اولی و دومی در این است که اولی اعداد صحیح int و دومی اعداد اعشاری double ایجاد می کند :
کد:
#include <cstdlib>
int [B]random[/B](int a, int b)
{
if (a == b)
return a;
return a + rand() % (b - a + 1);
}
double [B]random[/B](double a, double b)
{
if (a == b)
return a;
double r = ((double)(rand() % 10001)) / 10000;
return a + r * (b - a);
}
مثلا کد زیر یک عدد صحیح بین 10 و 20 را در متغیر i قرار می دهد :
کد زیر هم یک عدد اعشاری بین 2.5 و 7.5 را در متغیر j قرار می دهد :
کد:
double j = random(2.5, 7.5);