حل مشکل تکراری بودن تابع rand در سی پلاس پلاس برابر 41

در سی‌پلاس‌پلاس تابعی به نام rand وجود دارد که از آن برای تولید یک عدد تصادفی استفاده می‌شود؛ اما با این‌حال خروجی این تابع برای شما همیشه یکسان است! برای مثال خروجی آن در اکثر موارد برابر 41 می‌شود.

روش حل مشکل

باید مقدار دلخواهی را به عنوان seed برای تابع rand در نظر بگیریم؛ تا از آن تغذیه کرده و عدد تصادفی را تولید کند. مقدار seed را می‌توان برابر زمان سیستم در نظر گرفت تا همیشه یک مقدار جدیدی باشد. به عنوان مثال:

#include <iostream>
#include <cstdlib>
#include <time.h>

int main(void)
{
    srand(time(NULL));
    cout << rand() << endl;
    return 0;
}

برای تنظیم مقدار seed، از تابع srand استفاده می‌کنیم. همچنین از تابع time نیز برای گرفتن زمان فعلی استفاده می‌کنیم و این تابع هم در time.h تعریف شده است.


اجباری در استفاده از time.h وجود ندارد و شما می‌توانید از چیزهای دیگری برای گرفتن زمان فعلی سیستم استفاده کنید! برای مثال:

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;

int main(void)
{
    srand(time(NULL));
    cout << rand() << endl;
    return 0;
}

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

cp-codfk

نظرات ثبت شده بدون دیدگاه

توضیحات پیشنهادی نظرات اشتراک