یک عدد تصادفی بین دو مقدار خاص

alirezabe

New Member
سلام
می خواستم ببینم تابعی هست که بین دو عدد خاص که قرار است از ورودی گرفته شود مقداری تصادفی بدهد یا اگر نیست چگونه می شه چنین تابعی نوشت
با تشکر
علیرضا
 

the_king

مدیرکل انجمن
سلام
می خواستم ببینم تابعی هست که بین دو عدد خاص که قرار است از ورودی گرفته شود مقداری تصادفی بدهد یا اگر نیست چگونه می شه چنین تابعی نوشت
با تشکر
علیرضا

یک تابع اصلی در stdlib.h یا cstdlib.h به نام ()rand معرفی شده که یک عدد صحیح تصادفی بین 0 و
RAND_MAX بر می گرداند که RAND_MAX یک عدد صحیح از قبل تعریف شده بزرگ است (مثلا 32767 یا
2147483647).
اصولا برای آنکه مقدار خروجی ()rand از عددی بیشتر نشود، از عملگر باقیمانده تقسیم (%) استفاده می کنند.
مثلا مقدار (rand() % 101) همواره عددی بین 0 و 100 خواهد بود (ممکن است خود 0 و 100 هم باشد).

برای آنکه در هر بار اجرای برنامه، اعداد تصادفی متفاوتی ایجاد شود، بایستی تابع ()srand را به زمان سنج سیستم
مرتبط کرد :
کد:
srand( time(NULL) );
اصولا این کد سطر بالا را در ابتدای تابع ()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 قرار می دهد :
کد:
    int i = random(10, 20);

کد زیر هم یک عدد اعشاری بین 2.5 و 7.5 را در متغیر j قرار می دهد :
کد:
    double j = random(2.5, 7.5);
 

alirezabe

New Member
آقا از بس کامل بود دلم نیامد که از طریق پست هم تشکر نکنم
دستت خیلی مرسی
 

جدیدترین ارسال ها

بالا