PDA

View Full Version : سوال: سوالی در مورد تابع srand



scofield007
سه شنبه 27 آبان 1393, 17:30 عصر
با سلام خدمت دوستان عزیز

در تکه کد زیر :

#include <iostream>#include <time.h>
#include <stdlib.h>
using namespace std;


int main(){
int x, guess;
srand(time(NULL));
x = rand() % 10 + 1;
do{
cout << "adad ra hads bezanid(1 ta 10):";
cin >> guess;
if (guess == x)
cout << "sahih hast" << endl;
else if (guess < x)
cout << "adad morede nazar bozorg tar has" << endl;
else
cout << "adad morede nazar kockak tar has" << endl;
} while (guess != x);
system("pause");
return 0;
}




در خطی که تابع srand استفاده شده هست، دلیل استفاده از این تابع چی هست؟
چون ما برای تولید اعداد تصادفی از تابع rand استفاده کردیم.دیگه نیازی به استفاده از Srand نیست.

در مورد آرگومان تابع srand در کد بالا هم لطف کنید توضیح مختصری بدید

با تشکر

مسعود اقدسی فام
سه شنبه 27 آبان 1393, 17:39 عصر
هر مولد شبه‌تصادفی نیاز به یه مقدار اولیه‌ی تصادفی (غیرتکراری) برای تولید اعداد متفاوت داره. شما اگه مثلا بنویسید:
srand(1);
خروجی تابع rand همیشه یه جور می‌شه. چون همیشه از عدد یک برای شروع عملیات خودش استفاده می‌کنه. دقیقا مثل این می‌مونه که قبل از شروع هر دست از بازی کارتی کل کارت‌ها رو بر می‌زنن تا دوباره به صورت تصادفی پخش بشه و کارت تکراری دست کسی نرسه. (time(NULL هم زمان جاری سیستم (همون لحظه) رو به تیک بر می‌گردونه. طبیعتا هر بار که برنامه اجرا می‌شه زمان متفاوتی هست. پس مولد تصادفی هر بار با عدد جدیدی کار خودش رو شروع می‌کنه که هدف هم همون هست.

scofield007
سه شنبه 27 آبان 1393, 19:05 عصر
هر مولد شبه‌تصادفی نیاز به یه مقدار اولیه‌ی تصادفی (غیرتکراری) برای تولید اعداد متفاوت داره. شما اگه مثلا بنویسید:
srand(1);
خروجی تابع rand همیشه یه جور می‌شه. چون همیشه از عدد یک برای شروع عملیات خودش استفاده می‌کنه. دقیقا مثل این می‌مونه که قبل از شروع هر دست از بازی کارتی کل کارت‌ها رو بر می‌زنن تا دوباره به صورت تصادفی پخش بشه و کارت تکراری دست کسی نرسه. (time(NULL هم زمان جاری سیستم (همون لحظه) رو به تیک بر می‌گردونه. طبیعتا هر بار که برنامه اجرا می‌شه زمان متفاوتی هست. پس مولد تصادفی هر بار با عدد جدیدی کار خودش رو شروع می‌کنه که هدف هم همون هست.
ممنون دوست عزیز

لازم هست که از NULL استفاده کنیم؟