Генерация случайного числа AVR без начального числа
Я написал приложение в AVR Studio 4, которое генерирует случайные числа и выводит их на семисегментный дисплей. В тот момент, когда я использую начальное значение, начальное значение затем рандомизируется и выводится значение. Этот метод, очевидно, создает одну и ту же последовательность случайных чисел (и отображает одну и ту же последовательность) при каждом запуске программы. Есть ли альтернативный метод, который я могу использовать, который не использует начальное число и, как таковой, не запускает программу с одним и тем же номером каждый раз, учитывая разные случайные числа.
Спасибо
1 ответ
Каждый раз, когда микроконтроллер запускается, он видит то же самое внутреннее состояние, что и любой другой, когда он запускается. Это означает, что его вывод всегда будет одинаковым независимо от того, какой алгоритм вы можете использовать.
Единственный способ заставить его работать по-другому - это как-то изменить его состояние при запуске, введя некоторую внешнюю информацию или сохранив состояние между запусками. Некоторые идеи относительно того, как сделать первый вариант, могут заключаться в измерении продолжительности нажатия клавиши пользователя (если в вашей системе есть кнопки) или измерении температуры или другого внешнего ввода и использовании этого для заполнения алгоритма. Однако самый простой вариант, вероятно, состоит в том, чтобы просто сохранить счетчик в EEPROM, который увеличивается после каждого запуска, и использовать его для генерации начального числа.