Функция random() в языке Arduino IDE возвращает псевдослучайное число, т.е. последовательность, в которой генерируется случайное число, всегда предсказуема. Функция randomSeed() Arduino позволяет поместить переменную или константу в функцию random для генерации большего количества случайных значений. В этой статье рассмотрим, как правильно определить случайное число в языке Arduino IDE.
СОДЕРЖАНИЕ ►
Необходимые компоненты:
- Arduino Uno / Arduino Nano / Arduino Mega
Дополнительные материалы на эту тему:
Функция random в языке программирования Arduino IDE позволяет вернуть псевдослучайное число в диапазоне, заданном значениями min и max в команде. Давайте рассмотрим в этом небольшом обзоре несколько примеров для генерации случайных чисел при работе с платами Ардуино с различными типами данных — int, float, boolean. И разберем пример генерации случайной последовательности с помощью random seed.
Функция random int Arduino

В первом примере использован тип данных int, который хранит целые числа. Можно использовать и другие типы: byte, long, unsigned long, unsigned int и другие. Желаемый диапазон устанавливается соответствующим образом (min, max). Загрузите программу в микроконтроллер и откройте монитор последовательного порта Arduino.
int data;
void setup() {
Serial.begin(9600);
}
void loop() {
data = random(100, 200);
Serial.println(data);
delay(250);
}
Функция random float Arduino
Микроконтроллер Arduino может генерировать только целые числа. Поэтому, чтобы получить тип данных float с двумя десятичными знаками, необходимо отдельно генерировать целое число и добавить к нему десятичные знаки. Загрузите следующую программу в микроконтроллер Ардуино и откройте монитор последовательного порта.
float data;
float data1;
float data2;
void setup() {
Serial.begin(9600);
}
void loop() {
data1 = random(0, 10);
data2 = random(0, 100);
data = data1 + data2 / 100;
Serial.println(data);
delay(250);
}
Функция random bool Arduino
Если вам нужна случайная булева переменная, которая может принимать только два значения: true или false. Можно генерировать случайные истина/ложь с заданной вероятностью. Просто присвойте результат функции random для переменной bool. Пример такой программы для Ардуино с использованием типом данных boolean.
boolean data;
void setup() {
Serial.begin(9600);
}
void loop() {
data = random(5);
Serial.println(data);
delay(250);
}
randomseed Arduino — генерация случайных чисел
В следующем примере каждом перезапуске программы генератор псевдослучайных чисел будет запускаться функцией randomSeed(analogRead(A1)) от случайного значения, обусловленного «шумом». Для этого можно использовать любой свободный порт, так как все аналоговые входы микроконтроллеров принимают шумы из окружающей среды — радиоволны, электромагнитные помехи от компьютеров и мобильных телефонов и т.д.
int data;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(A1));
}
void loop() {
data = random(100, 200);
Serial.println(data);
delay(250);
}
Заключение. Обратите внимание, что в первых трех примерах программ случайная последовательность чисел повторяется при каждом перезапуске программы. Этого можно избежать, используя функцию randomSeed при программировании, которая позволяет поместить переменную в функцию random. Для этого используйте команды millis, analogRead или другие команды, чтобы сделать генерацию чисел более случайной.
