Случайный без параметров

Во время конкурса по программированию я использовал следующую строку кода:

symbols[i] = random() & 0b11;

После конкурса, когда я заглянул в справочник Arduino, я обнаружил, что случайным образом принимается один или два параметра. Исходя из этого, я ожидаю, что код не скомпилируется. Однако этот код каким-то образом сработал так, как я ожидал. (Присвоение случайного числа от 0 до 3) Почему?

, 👍0


1 ответ


1

Просто: random() — это не функция Arduino, а стандартная функция C.

Функция случайная()

длинный случайный(void)

Функция random() вычисляет последовательность псевдослучайных целых чисел в диапазоне от 0 до RANDOM_MAX (как определено в заголовочном файле <stdlib .h>).

Функция srandom() устанавливает свой начальный аргумент в качестве начального числа для новой последовательности псевдослучайных чисел, возвращаемой функцией rand(). Эти последовательности можно повторять, вызывая srandom() с тем же начальным значением.

Если начальное значение не указано, функциям автоматически присваивается значение 1.

-- Страница руководства AVR LIBC

,

Сами функции Arduino фактически используют «случайную» функцию без аргументов. [См. исходный код](https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/WMath.cpp#L35-L50), @Gerben