اعداد تصادفی (Random Numbers)
در C با تابعِ «عدد تصادفی (Random Number)» بازی می کنیم. اعداد تصادفی برای بازی، شبیه سازی، و تست خیلی بدرد می خورند.
عدد تصادفی ساده با rand()
تابع rand() از کتابخانه <stdlib.h> یک عدد صحیح می دهد.
#include <stdio.h>
#include <stdlib.h>
int main() {
int r = rand();
printf("%d\n", r);
return 0;
}
نکته: بدون «بَذر (Seed)» هر بار همان توالی تولید می شود.
تنظیم بذر با srand()
برای تنوع، یک «بذر» بده. بهترین بذر، «زمان فعلی» است. پس از <time.h> کمک بگیر.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
printf("%d\n", rand());
printf("%d\n", rand());
printf("%d\n", rand());
return 0;
}
نکته: srand() را فقط یک بار، ابتدای main صدا بزن.
عدد تصادفی در بازه دلخواه
با عملگر باقیمانده % بازه بساز. مثلاً صفر تا نه.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
int x = rand() % 10;
printf("%d\n", x);
return 0;
}
نمونه واقعی: تاس شش وجهی
برای تاس، بازه یک تا شش می خواهیم. الگو: (rand() % 6) + 1.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
int dice1 = (rand() % 6) + 1;
int dice2 = (rand() % 6) + 1;
printf("You rolled %d and %d (total = %d)\n", dice1, dice2, dice1 + dice2);
return 0;
}
نکته: درباره زمان دهی بذر، صفحه تاریخ و زمان را ببین. همچنین برای ثابت ها، ماکروها مفیدند.
گام های عملی سریع
- کتابخانه های لازم را include کن.
- با srand(time(NULL)) بذر بده.
- با rand() عدد بگیر و چاپ کن.
- برای بازه، از % استفاده کن.
جمع بندی سریع
- rand() عدد صحیح می سازد.
- srand() توالی را متنوع می کند.
- time(NULL) بذر خوبی است.
- % بازه دلخواه می دهد.