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

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Сгенерировать случайное число, Возможно ли?
DpInRock
сообщение Aug 12 2008, 11:10
Сообщение #1


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Есть пикпроцессор. Внешних устройств - нет.
Требуется после старта программы сгенерировать случайный байт.
Старт программы осуществляется присоединением батарейки.
Число требуется ровно одно.

У двух одинаковых устройств после подсоединения батарейки должны генерироваться 2 разных числа.

Возможно ли такое? 07.gif


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Aug 12 2008, 11:13
Сообщение #2


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

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



С точки зрения теории, всегда существует хоть и малая, вероятность, что числа будут одинаковыми.
Go to the top of the page
 
+Quote Post
Ден
сообщение Aug 12 2008, 11:17
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 128
Регистрация: 21-06-07
Из: Омск
Пользователь №: 28 594



Если имеется АЦП, то возможно произвести измерение "весящей" в воздухе ноги и взять младший бит. И таким образом добрать до нужного количества бит.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 12 2008, 11:24
Сообщение #4


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



У меня нет висящих ног. Но хотелось бы решить хитростью какой-нибудь. Там все очень стабильно (питание от батарейки). И АЦП даст слишком малую разницу.

У меня впечатление, что это невозможно. Поэтому и обратился к мировому сообществу. Все синхронно. Была надежда что запись в память EPROM случайна по времени - но нет. Как-то одинаково все.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Okorok
сообщение Aug 12 2008, 11:25
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 289
Регистрация: 17-06-07
Пользователь №: 28 498



Цитата(DpInRock @ Aug 12 2008, 13:10) *
Есть пикпроцессор. Внешних устройств - нет.
Требуется после старта программы сгенерировать случайный байт.
Старт программы осуществляется присоединением батарейки.
Число требуется ровно одно.

У двух одинаковых устройств после подсоединения батарейки должны генерироваться 2 разных числа.

Возможно ли такое? 07.gif
Не забывайте: Разных байтов бывает всего лишь 256.
Т.е. вероятность совпадения "случайных" чисел у двух разных устройств будет минимум 1/256.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 12 2008, 11:31
Сообщение #6


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Разумеется. Мне достаточно будет если ДВА разных устройства выдадут просто разные числа. Скажем от 1 до 10.
Т.е. подсоединяем батарейку у двух устройств. А они с вероятностью хотя бы 50% выдают разные числа. (Хотелось бы вероятность побольше, но на худой конец хватит и такой).

Поясню.
При первом подключении батарейки устройство должно сгенерировать свой адрес - 1 байт. И все.
При этом другое устройство (с понятной вероятностью) должно сгенерировать другой байт.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Flasher
сообщение Aug 12 2008, 11:33
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 374
Регистрация: 6-09-05
Из: Тирасполь, Приднестровье
Пользователь №: 8 294



а слабо еще серийник присвоить и завести его в механизм генерации. Плюс еще в епром писать для следующей генерации.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 12 2008, 11:38
Сообщение #8


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Слабо.

Надеюсь, что это на самом деле невозможно без внешнего источника случайного события.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Voice2001
сообщение Aug 12 2008, 11:48
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 240
Регистрация: 29-01-08
Из: эМ-ск
Пользователь №: 34 553



Вы бы дали информации побольше о своем устройстве. Возможно получилось бы откуда-нть достать это число
Цитата(DpInRock @ Aug 12 2008, 15:31) *
Поясню.
При первом подключении батарейки устройство должно сгенерировать свой адрес - 1 байт.

нужен адрес устройства? может тогда задержать их во времени и по порядку присваивать адреса (ессно между собой их придется связать)
гадать можно долго. Подробней расскажите


--------------------
Продаю котят. Недорого. 50р ведро.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 12 2008, 12:00
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Эти устройства никак не связаны друг с другом. Лежат себе на складе, никого не трогают.
Приходит человек, берет устройство и уходит. Вставляет батарейку. Бабах - устройство придумало себе адрес.

Потом, через год, этот человек берет другое устройство. Приходит к себе домой, вставляет батарейку - бабах - устройство придумало себе адрес. И с тем устройством, что уже у него имеется - не совпадает (с учетом вероятности).


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Dr.NoA
сообщение Aug 12 2008, 12:02
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 316
Регистрация: 22-10-05
Пользователь №: 9 976



Цитата(DpInRock @ Aug 12 2008, 15:24) *
У меня нет висящих ног. Но хотелось бы решить хитростью какой-нибудь. Там все очень стабильно (питание от батарейки). И АЦП даст слишком малую разницу.

Так есть АЦП или нет? Даже если его вход не висит в воздухе, все равно младший разряд скакать будет, поэтому делаете n измерений, в каждом из которых берете младший разряд, и их них составляете n-битное случайное число.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 12 2008, 12:08
Сообщение #12


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Идея такая.
На входе АЦП RC-цепочка, соединённая с питанием. При включении засекаем время и мерим напряжение.
Младший байт, я думаю, будет достаточно случайным.
Ещё есть алгоритмы псевдослучайных последовательностей, можно использовать измеренное напряжение с АЦП для инициализации ПСП


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
MMos
сообщение Aug 12 2008, 12:11
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 7-12-07
Пользователь №: 33 057



Действительно, мало информации. Мои соображения: если не писать ничего уникального внутри контроллера и ничего не цеплять снаружи, то гарантировать случайность невозможно. Однако, автор вопроса лукавит. Ведь если устройство никуда не подключается, то зачем ему адрес?
Go to the top of the page
 
+Quote Post
kurtis
сообщение Aug 12 2008, 12:17
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



Можно попробовать вычитывать содержимое ОЗУ перед инициализацией, теоретически оно будет случайно.
А часы реального времени присутствуют???Если да, то тогда при условии что устройства не будут включатся одновременно, то можно просто складывать месяц + день + часы + минуты + секунды или что-то вроде того
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Aug 12 2008, 12:40
Сообщение #15


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Спасибо за идею составлять число из младшего бита АЦП.
То, что нужно.

Добавлю к нему считывание посередине преобразования. СПАСИБО.
(Хотя, нет. не добавлю).

Сообщение отредактировал DpInRock - Aug 12 2008, 12:42


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 1st August 2025 - 18:43
Рейтинг@Mail.ru


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