PDA

View Full Version : آموزش: srand



بانوی ایران
چهارشنبه 06 مرداد 1389, 01:01 صبح
سلام دوستان میشه این کد رو برام توضیح بدید قسمت هایی که به صورت comment هست و درمورد نحوه کار با تابع srand مشکل دارم

#include <stdio.h>
#include<conio.h>
#include<stdlib.h>
int main()
{
int seed,y,z,count;
double r,x;
long int M;
seed=10000;
//srand(seed);
M=1000;
for(count=0;count<=20;++count)
{
//r = ((double)rand() / ((double)(RAND_MAX)+(double)(1)) );
x=r*M;
y=(int)x;
z=y+1;
printf("random number %3d %5f %5f %5d %5d\n",count,r,x,y,z);
getch();
return 0;
}

}


tnx

...StacK...
چهارشنبه 06 مرداد 1389, 09:19 صبح
کلا هدف این برنامه و تابع rand تولید اعداد شبه تصادفی هست -این اعداد شبه تصادفی بر اساس هسته ای که داخل تابع مقدار دهی شده انتخاب میشن و این مورد باعث میشه همیشه ما از یک مقدار یکسان هسته استفاده کنیم و در هر اجرای برنامه اعداد تصادفی یکسانی داشته باشیم ,در نتیجه باید مقدار هسته رو خود برنامه نویس به طریقی تغییر بده و الگوریتم هایی رو ارائه بده.

برای تغییر هسته از تابع srand استفاده میشه و در برنامه مذکور شما مقدار 10000 رو به هسته اختصاص
دادید.

و اما ثابت RAND_MAX: این ثابت نشان دهنده بزرگترین عدد تصادفی هست که تابع rand میتونه تولید کنه و معمولا برابر با مقدار unsigned int هست و کوچکترین مقدار هم متعاقبا صفر هست.

بهتره برای مقدار دهی به هسته از ساعت سیستم به صورت زیر استفاده کنید:


unsigned seed=time(NULL);
//use <time.h> header file
srand(seed);در این صورت در هر بار اجرای برنامه ,مقدار متفاوتی به هسته اختصاص داده خواهد شد.