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), які можуть забезпечити справжню випадковість, використовуючи фізичні процеси.