rand () פונקציה בשפת C

Rand Function C Language



בשפת C, ה שׁוּרָה() הפונקציה משמשת עבור מחולל מספר פסאודו (PRNG) . המספרים האקראיים שנוצרים על ידי הפונקציה rand () אינם אקראיים באמת. זהו רצף שחוזר על עצמו מעת לעת, אך התקופה כה גדולה עד שנוכל להתעלם ממנו. ה שׁוּרָה() הפונקציה פועלת על ידי זכירת ערך זרע המשמש לחישוב המספר האקראי הבא והזרע החדש הבא. במאמר זה, אנו הולכים לדון בפירוט כיצד ניתן ליצור מספרים אקראיים באמצעות שׁוּרָה() פוּנקצִיָה. אז בואו נתחיל!

קובץ הכותרת:

stdlib.h







תחביר:

int rand (void)



ערכי החזרה:

פונקציה זו מחזירה את המספר הפסאודו-אקראי הבא בסדרה. ערך הטווח של סדרת המספרים הוא בין 0 ל- RAND_MAX. RAND_MAX הוא מאקרו המוגדר ב- stdlib.h קובץ הכותרת, שערכו הוא הערך המרבי, שיכול לחזור לפי הפונקציה rand (). הערך של RAND_MAX גדול יותר אך לא פחות מ 32767 תלוי בספריות C.



// דוגמא1.ג

#לִכלוֹל
#לִכלוֹל

intרָאשִׁי()
{

intאני;

printf ('10 מספרים אקראיים => n');

ל(אני=0;אני<10;אני++)
{
printf ('%d', שׁוּרָה ());
}

printf (' n');
לַחֲזוֹר 0;
}


בדוגמא 1 ג, אנו קוראים לפונקציה rand () בכל איטרציה של לולאה ומדפיסים את ערך ההחזרה של הפונקציה. רצף הערכים של הפונקציה rand () זהה בכל פעם שאנו מריצים את התוכנית. כברירת מחדל, הזרע של הפונקציה rand מוגדר ל -1.





אנו יכולים להגדיר את הזרע לפונקציית rand באמצעות srand () פוּנקצִיָה. ניתן להגדיר את הזרע רק פעם אחת, ולפני הפעם הראשונה שׁוּרָה() שיחת פונקציה.

פונקציית srand ():

קובץ הכותרת:

stdlib.h



תחביר:

int srand (זרע אינט לא חתום)

טיעונים:

פונקציה זו דורשת ארגומנט אחד

זֶרַע: ערך שלם המשמש כזרע לסדרה חדשה של מספרים אקראיים פסאודו.

ערכי החזרה:

אף אחד

// דוגמה 2. ג

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

intרָאשִׁי()
{

intאני;

מסר ( זְמַן (0));

printf ('10 מספרים אקראיים => n');

ל(אני=0;אני<10;אני++)
{
printf ('%d', שׁוּרָה ());
}

printf (' n');
לַחֲזוֹר 0;
}


בדוגמה 2.c, השתמשנו בפונקציה srand () כדי להגדיר את הזרע הראשוני של רצף המספרים האקראיים שנוצר על ידי הפונקציה rand (). בכל פעם שהתוכנית מופעלת, נוצר רצף אחר. בפונקציה srand (), זמן (0) (מוכרז ב- time.h קובץ כותרת) משמש כזרע. הפונקציה הפעם (0) מחזירה את מספר השניות שחלפו מאז התקופה (00:00:00, 1 בינואר 1970). זה עדיין עשוי לייצר את אותם רצפים אם אתה מפעיל את התוכנית באותה שנייה.

// דוגמה 3. ג

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

intרָאשִׁי()
{

intאני;

מסר ( זְמַן (0));

printf ('10 מספרים אקראיים בין 1 ל 10 => n');

ל(אני=0;אני<10;אני++)
{
printf ('%d',( שׁוּרָה () %10) + 1);
}

printf (' n');
לַחֲזוֹר 0;
}


בדוגמה 3. ג ראינו כיצד ניתן ליצור מספרים אקראיים בין 1 ל -10.

// דוגמא 4. ג

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

intרָאשִׁי()
{

intאני,מקסימום,דקות;

printf ('הזן ערך מינימלי =>');
scanf ('%d', &דקות);
printf ('הזן ערך מקסימלי =>');
scanf ('%d', &מקסימום);

אם(דקות>מקסימום)
{
printf (הערך המינימלי גדול מהערך המרבי n');
לַחֲזוֹר 0;
}

מסר ( זְמַן (0));


printf ('10 מספרים אקראיים בין %d ל- %d => n',דקות,מקסימום);

ל(אני=0;אני<10;אני++)
{
printf ('%d',( שׁוּרָה () % (מקסימום-דקות+1)) +דקות);
}

printf (' n');
לַחֲזוֹר 0;
}


בדוגמא 4.c לקחנו את הטווח מהמשתמש ויצרנו מספר אקראי בתוך טווח זה. הנוסחה היא: rand ()% (max - min +1)) + min

// דוגמא 5.c

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

intרָאשִׁי()
{

intאני;

מסר ( זְמַן (0));

printf ('10 מספרים אקראיים בין 0.0 ל -1.0 => n');

ל(אני=0;אני<10;אני++)
{
printf ('%f',((לָצוּף) שׁוּרָה () /RAND_MAX));
}

printf (' n');
לַחֲזוֹר 0;
}


בדוגמא 5.c, ראינו כיצד אנו יכולים ליצור מספרים אקראיים בין מצוף 0.0 ל -1.0 הנוסחה היא: (צף) rand () /RAND_MAX)

// דוגמא 6.c

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

intרָאשִׁי()
{

intאני;
לָצוּףמקסימום,דקות;

printf ('הזן ערך מינימלי =>');
scanf ('%f', &דקות);
printf ('הזן ערך מקסימלי =>');
scanf ('%f', &מקסימום);

אם(דקות>מקסימום)
{
printf (הערך המינימלי גדול מהערך המרבי n');
לַחֲזוֹר 0;
}

מסר ( זְמַן (0));

printf ('10 מספרים אקראיים בין %f ל- %f => n',דקות,מקסימום);

ל(אני=0;אני<10;אני++)
{
printf ('%f',דקות+ ((לָצוּף) שׁוּרָה () /(RAND_MAX/(מקסימום-דקות))));
}

printf (' n');
לַחֲזוֹר 0;
}


בדוגמה 6.c, לקחנו את הטווח מהמשתמש ויצרנו מספר אקראי בתוך טווח זה (כולל שניהם). הנוסחה היא: דקות + ((צף) רנד () /(RAND_MAX /(מקסימום - דקות)))

סיכום:

במאמר זה למדנו כיצד ניתן ליצור מספרים אקראיים באמצעות שׁוּרָה() ו srand () פוּנקצִיָה. אין ערבויות לגבי איכות המספרים האקראיים שנוצרים על ידי פונקציית ה- rand, אך היא מספיק טובה לשימוש מזדמן.