Если вы когда-либо пробовали создавать игры на Arduino (например, ту же игру «Simon» или «Кости»), вы наверняка сталкивались с функциями random(). Однако при каждом перезапуске контроллера вы могли заметить одну странность: последовательность «случайных» чисел повторяется в точности так же, как и в прошлый раз. Почему так происходит и как заставить Arduino быть по-настоящему непредсказуемой? Ответ кроется в функции randomSeed(). Компьютеры и микроконтроллеры не умеют генерировать истинно случайные числа. Они используют так называемые псевдослучайные числа. Это сложный математический алгоритм, который берет начальное значение (так называемое «зерно» или seed) и на его основе вычисляет следующее число. Если вы не задаете «зерно» вручную, Arduino всегда использует значение по умолчанию (обычно 0 или 1). Поэтому при каждом включении алгоритм начинает вычисления с одной и той же точки — и вы получаете один и тот же «случайный» ряд чисел. Функция randomSeed(seed) задает начальную точку для г