10-02-2006, 13:27
|
|
|
|
חבר מתאריך: 20.06.03
הודעות: 5,616
|
|
בבקשה, הסבר מפורט "מספר אקראי"
בדוגמה הראשונה שלך, ניסית להשתמש בפונקציה randomize שאינה פונקציה תקנית (אם אני
לא טועה, היא מגיעה מהמהדרים של borlnad - אבל אל תתפוס אותי במילה).
מדוע פונקצית rand מחזירה לך תמיד את אותו ערך? המחשב אינו יודע "למצא" מספר אקראי,
שכן רעיון מספרים אקראיים די מנוגד לפיזיקה וללוגיקה של המחשב. על מנת "לחשב" מספרים
אקראיים ישנו אלגוריתם הממומש בפונקציה rand - אך שימוש חוזר של אלגוריתם זה למעשה
תמיד יפיק לך את אותם מספרים "אקראיים". על מנת למנוע את הבעייה הידועה הזו, אנו משתמשים
בשעון המחשב.
אנו מחשבים מספרים אקראיים כפונקציה של זמן - מאחר ועקרונית, הזמן לא אמור לחזור על
עצמו אף פעם (זמן = תאריך+שעה) ולכן הפונקציה rand בתלות בזמן אמורה לייצר מספרים יותר
"אקראיים".
תחביר בסיסי:
קוד:
#include <stdlib.h>
#include <time.h>
int get_rand_num ()
{
srand((unsigned int)time((time_t *)NULL));
return rand();
}
והסברון srand, הוא המקבילה של randomize - אם אתה מודע לפעולתו של randomize - אז אין הרבה מה להסביר.
בהצלחה,
|