Я тут поглядел - а ведь rand() при включении питания всегда выплевывает одинаковую цепочку чисел... И без часов реального времени или какого-нить внешнего пинка получить разные (хоть и псевдослучайные) цепочки нельзя. Может как-нить шум АЦП для этого дела использовать? Кто сталкивался с такой проблемой?
диапазон будет маленьким Можно подать на АЦП любой изменяющийся сигнал, в т.ч. и с амплитудой выше опорного. А можно с внешнего генератора прямоугольников и измерять длительность от включения МК. За счет неопределенности момента включения МК и получим случайное значение.
А большой диапазон и не нужен, 1 бита достаточно. Сделать 16 или 32 измерения и слить их в одно число. Если в использованном AVR у АЦП есть предусилитель - его тоже стоит включить, станет сильнее шуметь. Если вообще нету АЦП - то надо лепить что-то к компаратору.
А еще можно в EEPROMе считать сумму байт и брать за основу при включении девайса И дописывать туда естественно в обязательном порядке каждый раз что-нибудь эдакое.
Michael_K писал(а):Можно мерить расхождение частот RC и кварцевого генератора (можно даже без внешних компонентов через вотчдог - только долго через ресет летать...)
Можно просто конденсатор добавить к предложеному выше резистору с хтал2 на АЦП - получим ФНЧ с нестабильными параметрами.
If you need really true randomness you need to find real world source that could inject some entropy. This could be any noisy diode connected to ADC. Such random generators are so called Hardware Random Number Generators. They often use some microscopic phenomena like thermal noise, photoelectric effect, etc.
Добавлено спустя 31 секунду: Сам не знаю что такое, но думаю авр123 легко разберет
Вобщем сигнал с XTAL2 через резистор 10 ком подаем на АЦП и АЦП шунтируем парой последовательных диодов 1N4148 на землю и получаем кучу хаотичных гармоник на входе АЦП
А может просто "открытую" ножку АЦП оцифровывать к которой антенна в виде проводничка на плате подключена и брать младшие биты только - самые "шумные".