randomSeed – הסבר ופרטים

- עמוד זה הוא חלק מהמדריך לפונקציות ארדואינו -

הפונקציה randomSeed(seed) משמשת לאתחול האלגוריתם מחולל המספרים הפסודו-אקראיים. שרשרת המספרים האקראיים-לכאורה שמחושבת ומוחזרת מקריאות חוזרות לפונקציה random נובעת ישירות מהערך שנשלח ב-seed.

השימוש העיקרי של randomSeed הוא להבטיח ששרשרת מספרים אקראיים מהפונקציה random לא תחזור על עצמה בהפעלות חוזרות של הקוד. לשם כך, יש לדאוג ש-seed לא יחזור על עצמו (עד כמה שניתן) בהפעלות השונות. את זה אפשר לעשות, בין השאר, באמצעות השגה של ערך seed שאינו ידוע מראש, ממקור חיצוני כגון קריאת analogRead מפין שאינו מחובר לדבר ("צף"), או קריאת תאריך ושעה ממודול שעון זמן אמתי (RTC) והמרתם למספר אחד.

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

פרמטרים

seed, מטיפוס unsigned long, הוא הערך שישמש לאתחול מחולל המספרים הפסודו-אקראיים.

ערך חוזר

אין

דוגמאות

randomSeed(analogRead(A3));

הערות

  • אם לא נעשה שימוש ב-randomSeed, האלגוריתם מחולל המספרים הפסודו-אקראיים יאותחל עם ערך ברירת המחדל 1.
  • בספטמבר 2015, זיהיתי שגיאה במימוש של randomSeed בארדואינו – הוא אינו עושה דבר כששולחים אליו את הערך 0 בפרמטר seed. למיטב ידיעתי, הבעיה לא תוקנה עד היום.

קישורים רלוונטיים

בלוג אישי בנושאי מייקינג, תכנות, מיקרו-בקרים ואלקטרוניקה