سلام
حتما دوستان واردی قبلا توضیحات جامع و کاملی دادن. اما این چیزایی که در مجموع در مورد تابع رندوم می دونم:
تابع رندوم یه تابعیه که اگه خیلی ساده فراخونی بشه و اونو مساوی با یه متغیر قرار بدیم مقدار صحیحی بین 0 تا 9 رو بصورت رندوم داخل اون متغیر میریزه.
شما می تونید کار دادن ورودی رندوم برای جاهاییکه خروجی خاصی مورد نظرتون نیست به این شکل تولید کنید مثل مد یا بیشترین یا تعداد یا از این دست.
اما این روش ساده و ابتدایی نقص بزرگی داره:
1)اول اینکه اعداد رندوم تولید شده در هربار یکسان خواهند بود.راه حل:
برای تابع رندوم چیزی وجود داره به نامseed که اون تعیین می کنه اعداد رندوم چطور تولید بشه. در هربار راه انداختن برنامه باید این رو تنظیم کرد. میشه از کاربر بصورت دستی گرفتش. اما این هم زیاد جالب نیست. بهتره قبل از استفاده از تابع رندوم بوسیله ساعت سیستم Seed رو تنظیم کنیم.
2)دومین نکته اینه که ما شاید بخوایم اعداد تولید شده بصورت رندوم در یک بازه خاصی تولید بشن نه بین 0 تا 9. این دیگه یه سوال ریاضیاتیه تا یه مسئله برنامه نویسی. ما یه تابع داریم که اعدادی بین 0 تا 9 تولید می کنه. چکار کنیم تا بین کف و سقف ما باشن؟
اگر x یک عدد تصادفی بین 0 تا 9 باشه و a کف مقادیر دلخواه و b سقف مقادیر دلخواه باشنبا این فرمول اعداد تولیدی در بازه دلخواه ما قرار می گیرن:
Random=x%(b-a+1)+a;
کدی که تمام این موارد رو رعایت کرده و باشه و بشه توی برنامه ها اونو بکار برد به این شکله:
int *nums;//araye pooya
long int a,b,size,i,j;
//------------------------------------------------------------
printf(" tedad adad ra vared konid: "); //tedade adadi ke mikhahim tolid shavad
scanf("%d",&size);
nums=(int *)malloc(size * sizeof(long int));//ijade araye pooya
if(!nums)
{
printf("faza mojood nist!\n");
getch();
exit(1);
}
printf("kafe maghadir:");//baraye entekhabi kardane kaf va saghfe maghadire random ke dakhele araye pooya mirizim
scanf("%d",&a);
printf("saghfe maghadir:");
scanf("%d",&b);
srand(time(0));
for ( i = 0; i < size; i++ )//ijade adade random be tedade voroodiye khaste shode
{
int rand100 = rand()%(b-a+1)+a;
*(nums+i)=rand100;
}
بازم خوشحال میشم اگه دوستان بیان مواردی رو که می دونن به این تاپیک اضافه کنن. چیزایه خیلی ساده ای که شما می دونید، ممکنه در وقت بسیاری صرفه جویی کنه. این مواردی رو که گفتم در طی یک سال برطبق نیازهایی که باهاش روبرو شدم بدست آوردم. امیدوارم نکات ارزشمندی اینجا جمع بشه.