المتغيرات
فضاءات التسمية
أفعال

srand

من cppreference.com
< c‏ | numeric‏ | random
معرفة في ملف <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

[تعديل] أنظر أيضا

تولد عدد شبه عشوائي
(دالة) [edit]
أكبر قيمة يمكن توليدها بـ rand()
(ثابت ماكرو) [edit]