Функция random() в Ардуино

arduino-logo

Описание функции random

Функция random() используется для получения псевдослучайного числа.

При вызове функции генерируется длинная-длинная последовательность случайных чисел, которая является неизменной. Изменяется только параметр, который задает точку начала генерации случайных чисел, и задается он функцией randomSeed. Примерно так:

Выборка функции random seed в ардуино
Пример генерации последовательности чисел функцией randomSeed

Для того, чтобы при каждом запуске устройства получать различные значения псевдослучайных чисел, при запуске необходимо проинициализировать генератор с произвольным параметром. Как вариант, если есть неиспользуемый аналоговый вход/выход, то можно в качестве параметра передавать значение, которое вернет функция analogRead.

Синтаксис

long random(long howbig); 
long random(long howsmall, long howbig) 

Параметры

  • howsmall: нижняя граница диапазона случайных значений (включительно);
  • howbig: верхняя граница диапазона случайных значений (не включительно).

Что возвращает

Случайное число из диапазона от howsmall до howbig или из диапазона от 0 до howbig.

Пример

Выведем псевдослучайные числа из диапазона от 0 до 10 и из диапазона от 50 до 100:

void setup() {
  Serial.begin(9600);
}

void loop() {
  Serial.print("Псевдослучайное число из диапазона от 0 до 10: ");
  Serial.println(random(11));
  Serial.print("Псевдослучайное число из диапазона от 50 до 100: ");
  Serial.println(random(50, 101));
  Serial.println("---------------------------------------------------");
  delay(1000);
}
Случайное число arduino IDE

Код функции random

(hardware/arduino/avr/cores/arduino/WMath.cpp 1.8.10)

long random(long howbig)
{
  if (howbig == 0) {
    return 0;
  }
  return random() % howbig;
}

long random(long howsmall, long howbig)
{
  if (howsmall >= howbig) {
    return howsmall;
  }
  long diff = howbig - howsmall;
  return random(diff) + howsmall;
}

Загрузки

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии