srand
من cppreference.com
<tbody>
</tbody>
| معرفة في ملف <stdlib.h>
|
||
void srand( unsigned seed ); |
||
تحدد قيمة ابتدائية (بذرة) seed يستعملها مولد الأعداد شبه العشوائية في rand().
في حالة استعمال rand() دون استدعاءات سابقا لـ srand(), تتصرف rand() كما لو كانت البذرة تساوي الواحد (أي srand(1)).
كل مرة يتم تحديد نفس البذرة بـ srand() يجب توليد نفس المتتالية جراء rand().
لا يشترط أن تكون rand() آمنة الإستخدام بين خيوط مختلفة (ليست thread-safe).
المعطيات
| seed | - | قيمة البذرة |
القيمة المُرجعة
(لا شيء)
ملحوظات
عامة, يجب تحديد بذرة مرة واحدة فقط قبل استدعاءات rand().
عادة يتم استعمال ناتج time(0) كبذرة لكن هذا السلوك ليس مضمون. time() تٌرجع قيمة من النوع time_t لا يشترط فيها ان تكون مكافئة لعدد صحيح.
عمليا تقوم كل البيئات الشائعة (POSIX وويندوز من ضمنهم) بتعريف time_t كعدد صحيح.
مثال
قم بتشغيل هذا الكود:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(0)); //use current time as seed for random generator
int random_variable = rand();
printf("Random value on [0,%d]: %d\n", RAND_MAX, random_variable);
}
خرج ممكن:
Random value on [0 2147483647]: 1373858591
أنظر أيضا
| تولد عدد شبه عشوائي (دالة) | |
أكبر قيمة يمكن توليدها بـ rand() (ثابت ماكرو) | |
مقالة مرجع C++ عن srand
| |