Всем добрый день! Я пытаюсь рандомизировать числа на AVR Asm (atmega128). Поэтому мне нужно инициализировать значение в начале и отметить, что разработчики asm x86 используют инструкцию «rdtsc». Возможно ли инициализировать какое-то случайное значение инициализации, такое как rdtsc в архитектуре AVR? Можно ли использовать другое значение инициализации? Спасибо и привет.
Счетчик меток времени Atmel AVR Assembler
Ответы (2)
Вероятно, вы можете использовать таймер, работающий от тактовой частоты ЦП (потому что это и есть TSC). Тем не менее, этого достаточно только для заполнения генератора псевдослучайных чисел, а сгенерированные случайные числа не подходят для криптографических операций.
Я вижу, вы это знаете, но, чтобы еще раз подчеркнуть, вы не можете использовать какое-либо значение таймера/счетчика в качестве генератора случайных чисел. Вы можете использовать его только как источник начального числа псевдослучайного алгоритма.
Чтобы сделать это, вам нужен таймер/счетчик, который считает быстро и непрерывно, и человек, который фактически работает как генератор случайных событий.
Без участия человека невозможно получить начальное число случайных чисел с помощью таймера или счетчика.
В компьютерах человек рандомизирует момент запуска программы.
Счетчик на самом деле не так важен. Единственное требование к нему - бежать намного быстрее, чем время реакции человека. Несколько килогерц - приемлемая частота. Таким образом, вы можете использовать, например, некоторые таймеры, настроенные на максимально возможную частоту, или даже простой программный счетчик, увеличивающийся на каждый основной цикл программы (конечно, если программа достаточно быстрая).
Если ваше устройство поддерживает часы реального времени, используйте их. Таким образом, вы получите лучшую рандомизацию, потому что RTC работает, даже если все устройство выключено.
Таким образом, включенный человеком переключатель обеспечит событие случайного момента.
Во всех случаях алгоритм, который вы будете использовать для генерации псевдослучайных чисел, гораздо важнее, чем метод генерации начальных чисел.
Итак, сделайте как можно проще и глупее и сконцентрируйтесь на генераторе псевдослучайных чисел.