Arduino:
גילוי מספרים אקראיים
איך לעשות:
Arduino מספקת פונקציות ישירות ליצירת מספרים אקראיים: randomSeed()
ו-random()
. להתחלה, עליך לזרוע את מחולל המספרים האקראיים כדי להבטיח שימוש בסדרות שונות של מספרים בכל פעם שהתוכנית מופעלת. השיטה המקובלת לשים זרע כוללת קריאה אנלוגית מחיבור שאינו מחובר.
void setup() {
Serial.begin(9600);
// אתחול זרע אקראי
randomSeed(analogRead(0));
}
void loop() {
// יצירת מספר אקראי בין 0 ל-99
int randomNumber = random(100);
Serial.println(randomNumber);
delay(1000); // השהייה לשנייה לקריאות הפלט
}
התוכנית שלמעלה מאתחלת את מחולל המספרים האקראיים בפונקציה setup()
ויוצרת מספר חדש בין 0 ל-99 בכל איטרציה של הלולאה, ומוציאה את המספר למסך הסריאלי.
דוגמת פלט:
42
17
93
...
צלילה עמוקה
פונקצית ה-random()
של Arduino מנצלת בפועל מחולל מספרים פסבדו-אקראי (PRNG), אשר מתקדם לפי סדרה דטרמיניסטית אך נראה סטטיסטית אקראית. הערך ההתחלתי, או הזרע, של הסדרה משפיע רבות על חוסר צפיותו, ולכן השימוש הנפוץ randomSeed()
עם קלט די אקראי כנקודת התחלה. חשוב לציין כי האקראיות שנוצרת על ידי Arduino מספיקה לרוב הפרויקטים התחביביים אך עשויה לא לעמוד בקריטריונים ליישומים ברמה גבוהה של אבטחה בגלל הניתנות לחיזוי שלה עם הזמן. למטרות קריפטוגרפיות, מומלץ להתעמק באלגוריתמים מתוחכמים יותר ובמחוללי מספרים אקראיים חומרתיים (HRNGs), אשר יכולים לספק אקראיות אמיתית על ידי נצל תהליכים פיזיים.