ציטוט:
נכתב במקור על ידי nitsanbn
שי יניב דווקא צודק
היום מספרים רנדומלים במחשב קשורים מאוד לשעון של המחשב..
|
מספר רנדומלי מוגרל באמצעות seed.
זאת אומרת, יש פונקציה לדוגמא שמקבלת 3 ארגומנטים
(כאשר כמובן ברמה הגבוהה ביותר היא תקבל רק seed, אבל זה כבר משהו אחר - אפשר להתעלם מהסוגריים האלה).
כל עוד min, max ו-seed ישארו אותו הדבר - הפונקציה תוציא תמיד אותו פלט.
כמובן, שאפשר להחליף את ה-seed ועדיין לקבל את אותה התוצאה.
הרעיון הוא שה-seed, כל פעם מוגרל מחדש - על ידי שימוש בשעון הפנימי, בכל מיני הגדרות ודברים שלאנשים ש"מבחוץ" יהיה קשה לנחש.
מה הבעייתיות הגדולה?
נראה דוגמא ב-PHP למען הנוחות.
כדי להגדיר seed ב-PHP משתמשים בפונקציה srand. אגב, אחרי כל שימוש בפונקציה rand (יצירת מספר רנדומאלי, min, max), אוטומטית קוראים לפונקציה srand ללא ארגומנטים - משמע seed רנדומאלי.
נראה דוגמא ב-PHP:
קוד:
srand(100);
var_dump(rand(0,10));
לא משנה כמה פעמים תריצו מחדש - תמיד תגיעו לאותה תוצאה.
בעבר, לפני שאוטומטית נוצר seed רנדומאלי, לעיתים נהגו לעשות משהו הדומה ל-:
הבעייתיות עם זה שקל מאוד לחזות את time, ואחרי מספר בדיקות אפשר לדעת מראש מה תיהיה התוצאה.
(אפשר לחשוב לבד איזה השלכות יש לזה).
וזה בקצרה איך שנוצרים מספרים רנדומאליים ודוגמא אחת לניצול לרעה.