Случайный без параметров
Во время конкурса по программированию я использовал следующую строку кода:
symbols[i] = random() & 0b11;
После конкурса, когда я заглянул в справочник Arduino, я обнаружил, что случайным образом принимается один или два параметра. Исходя из этого, я ожидаю, что код не скомпилируется. Однако этот код каким-то образом сработал так, как я ожидал. (Присвоение случайного числа от 0 до 3) Почему?
@Svízel přítula, 👍0
1 ответ
Просто: random()
— это не функция Arduino, а стандартная функция C.
Функция случайная()
длинный случайный(void)
Функция
random()
вычисляет последовательность псевдослучайных целых чисел в диапазоне от 0 доRANDOM_MAX
(как определено в заголовочном файле<stdlib .h>
).Функция
srandom()
устанавливает свой начальный аргумент в качестве начального числа для новой последовательности псевдослучайных чисел, возвращаемой функциейrand()
. Эти последовательности можно повторять, вызываяsrandom()
с тем же начальным значением.Если начальное значение не указано, функциям автоматически присваивается значение 1.
-- Страница руководства AVR LIBC
- Возможно ли, чтобы функция возвращала строку ИЛИ число, в зависимости от адреса
- Как использовать SPI на Arduino?
- Библиотека DHT.h не импортируется
- Светодиоды: разница между общим анодом и общим катодом
- Как повторить кусок кода
- Почему эта программа на C++ не может прочитать Serial.write() моего arduino?
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Отображение двоичных данных на светодиодах
Сами функции Arduino фактически используют «случайную» функцию без аргументов. [См. исходный код](https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/WMath.cpp#L35-L50), @Gerben