реклама на сайте
подробности

 
 
> Инициализация псевдослучайной последовательности, как это сделать?
ARV
сообщение Mar 11 2011, 05:42
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Отправная точка: миниатюрное устройство, где каждый новый компонент - лишний. устройство формирует ряд "случайных" сигналов, используя rand(). в сущности, алгоритм генерации ПСПЧ не принципиален. но есть большая проблема: два одинаковых устройства, включенные одновременно, генерируют абсолютно одинаковые "случайные" последовательности, что очень плохо. более того, после подачи питания устройство всегда стартует с одного и того же "места", что тоже очень плохо.

есть, конечно, функция srand(), которая могла бы помочь, но для нужного результата эту функцию нужно передать случайное число... круг замкнулся.

вопрос знатокам: посоветуйте, какими простыми и дешевыми средствами реализовать получение хотя бы одного-единственного, но на самом деле случайного числа в программе?

сразу ограничу круг советов: надежда на то, что после включения питания ячейки ОЗУ содержат случайные данные, не срабатывает, в подавляющем большинстве у одного и того же контроллера при более-менее одинаковых условиях содержимое ОЗУ после подачи питания так же более-менее одинаковое, вариации крайне недостаточные для того, чтобы считать их действительно случайными - проверено на некотором количестве atmega32.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ARV
сообщение Mar 14 2011, 05:56
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



не смотря на то, что лично для меня тема исчерпана, обсуждение продолжается sm.gif
поясню:
1. одновременно - не значит на самом деле одновременно, т.е. в абсолютно один и тот же момент. просто человек включает два девайса и они показывают ему одинаковое состояние. человек снова "передергивает" питание - и снова оба одно и то же... причем то же самое, что и в прошлый раз. именно от этого нужно было уйти.
2. самое простое решение было высказано: хранить в EEPROM число включений и использовать его для srand() - инициализации генератора ПСПЧ. это самое простое решение. не смотря на то, что два впервые изготовленных девайса будут вести себя точно так же, как описано в п.1, но стоит на "5 минут" унести один девайс в другую комнату и там его повключать, то вернувшись обратно синхронности уже не добиться. и угадать, на сколько включений произошло рассогласование внутренних счетчиков тоже будет сложно.
3. улучшение варианта п.3 элементрано: на стадии прошивки задается "случайное" первичное значение счетчика включений - это несложно сделать при помощи программатора с возможностью редактирования дампа EEPROM.
4. варианты внешнего усложенения схемы (генераторы шума на стабилитронах, транзисторах и т.п.) дадут лучшую случайность, но, во-первых, истинная случайность не требуется, а во-вторых, это усложняет схему, т.е. удорожает ее. кстати, эти варианты изначально были известны ... и отброшены.
5. кнопок, дребезг которых можно было бы использовать, или останавливать по ним таймер и т.п., в девайсе не предусмотрено sm.gif


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Mar 14 2011, 09:41
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(ARV @ Mar 14 2011, 08:56) *
5. кнопок, дребезг которых можно было бы использовать, или останавливать по ним таймер и т.п., в девайсе не предусмотрено sm.gif

Еще варианты - измерение напряжения встроенного опорного источника (отличается от экземпляра к экземпляру даже в одной партии кристаллов, хотя абсолютное число "вариантов" не так уж и велико). И измерение частоты встроенного калиброванного RC-генератора (если тактирование от внешнего кварца). Как вариант - измерение времени записи в ячейку(и) EEPROM данных.

Цитата(ARV @ Mar 14 2011, 08:56) *
3. улучшение варианта п.3 элементрано: на стадии прошивки задается "случайное" первичное значение счетчика включений - это несложно сделать при помощи программатора с возможностью редактирования дампа EEPROM.

Тогда уж правильнее "сериализация" (инкремент серийного номера) (avreal, например, это обеспечивает). А от серийника считать "затравку".
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Mar 14 2011, 11:17
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(rx3apf @ Mar 14 2011, 12:41) *
Еще варианты - измерение напряжения встроенного опорного источника
А относительно чего измерять? Внешний опорник ставить?
Предлагаю считать количество нейтрино, прошедших сквозь прибор, за какой-то интервал времени:-)

Кстати, что там с регистром OSCAL он вообще отличается среди образцов одной партии? Если да то ещё немного случайности добавит.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- ARV   Инициализация псевдослучайной последовательности   Mar 11 2011, 05:42
- - Taradov Alexander   У Атмела есть аппнот на эту тему, номер не помню п...   Mar 11 2011, 06:29
- - ARV   пока что не нашел такого апноута... с АЦП я пробов...   Mar 11 2011, 06:53
|- - Taradov Alexander   QUOTE (ARV @ Mar 11 2011, 09:53) но для о...   Mar 11 2011, 07:55
- - 314   Висящий в воздухе вывод АЦП лихо реагирует на влаж...   Mar 11 2011, 07:04
- - ARV   в том-то и дело, что висящий вход лихо на все реаг...   Mar 11 2011, 07:08
- - Petka   Цитата(ARV @ Mar 11 2011, 08:42) есть, ко...   Mar 11 2011, 07:24
|- - ARV   Цитата(Petka @ Mar 11 2011, 10:24) На сам...   Mar 11 2011, 07:52
- - DpInRock   Согласен с предыдущим оратором. Хуже того, набор 1...   Mar 11 2011, 08:05
- - rx3apf   Цитата(ARV @ Mar 11 2011, 08:42) вопрос з...   Mar 11 2011, 08:07
|- - ARV   Цитата(rx3apf @ Mar 11 2011, 11:07) Уника...   Mar 11 2011, 08:20
- - domowoj   Если говорить о псевдослучвайной последовательност...   Mar 11 2011, 15:27
|- - rx3apf   Цитата(domowoj @ Mar 11 2011, 18:27) Если...   Mar 11 2011, 15:56
- - domowoj   Тогда усилить шумы стабилитрона и оцифровать   Mar 11 2011, 17:19
|- - muravei   Цитата(domowoj @ Mar 11 2011, 20:19) Тогд...   Mar 13 2011, 09:53
|- - SKov   Цитата(muravei @ Mar 13 2011, 12:53) А ес...   Mar 13 2011, 09:59
|- - demiurg_spb   Уважайте поиск! :-) В ветке AVR по слову RAND ...   Mar 13 2011, 10:12
- - zombi   Цитата(ARV @ Mar 11 2011, 08:42) Отправна...   Mar 11 2011, 18:51
- - forever_student   Цитата(ARV @ Mar 11 2011, 08:42) ... посо...   Mar 13 2011, 10:51
- - HALFer   дребезг контактов (геркон, реле). обмотку на выход...   Mar 14 2011, 01:06
|- - =AK=   Цитата(ARV @ Mar 14 2011, 16:26) 1. однов...   Mar 14 2011, 06:22
|- - rx3apf   Цитата(demiurg_spb @ Mar 14 2011, 14:17) ...   Mar 14 2011, 11:29
- - ARV   снова у меня проблема rand() вместе с srand() не ...   Mar 19 2011, 18:24
|- - defunct   Цитата(ARV @ Mar 19 2011, 20:24) посодейс...   Mar 19 2011, 21:22
|- - forever_student   Цитата(ARV @ Mar 19 2011, 21:24) ...посод...   Mar 19 2011, 21:43
|- - ARV   Цитата(forever_student @ Mar 20 2011, 00...   Mar 20 2011, 09:54
|- - rx3apf   Цитата(ARV @ Mar 20 2011, 12:54) мне нуже...   Mar 20 2011, 12:29
||- - ARV   Цитата(rx3apf @ Mar 20 2011, 15:29) У мен...   Mar 20 2011, 13:38
||- - rx3apf   Цитата(ARV @ Mar 20 2011, 16:38) скажите ...   Mar 20 2011, 14:05
|- - defunct   Цитата(ARV @ Mar 20 2011, 11:54) требующи...   Mar 20 2011, 14:53
- - Warlockwolf   Кодu32 iran; u8 Radom(){ iran=(iran*...   Mar 19 2011, 21:51
- - ARV   всем в очередной раз спасибо. как обычно, в попытк...   Mar 21 2011, 09:07
- - Метценгерштейн   а не лучше ли использовать алгоритм ПСП, например ...   Mar 2 2012, 13:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 04:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01442 секунд с 7
ELECTRONIX ©2004-2016