Перейти к содержанию

random() Arduino: randomseed, random int в Ардуино

randomseed, random int в Ардуино

Функция random() в языке Arduino IDE возвращает псевдослучайное число, т.е. последовательность, в которой генерируется случайное число, всегда предсказуема. Функция randomSeed() Arduino позволяет поместить переменную или константу в функцию random для генерации большего количества случайных значений. В этой статье рассмотрим, как правильно определить случайное число в языке Arduino IDE.

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega

Дополнительные материалы на эту тему:

  1. Функция map и float mapf в Ардуино
  2. Функция millis, многозадачность Ардуино
  3. Функция delay, delayMicroseconds Ардуино

Функция random в языке программирования Arduino IDE позволяет вернуть псевдослучайное число в диапазоне, заданном значениями min и max в команде. Давайте рассмотрим в этом небольшом обзоре несколько примеров для генерации случайных чисел при работе с платами Ардуино с различными типами данных — int, float, boolean. И разберем пример генерации случайной последовательности с помощью random seed.

Функция random int Arduino

randomseed, random int в Ардуино

В первом примере использован тип данных 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 или другие команды, чтобы сделать генерацию чисел более случайной.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

newzaym
➜