Генератор случайных чисел

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
PANYTA
Встал на лапы
Сообщения: 87
Зарегистрирован: Пн мар 30, 2009 07:38:28
Откуда: Бурятия

Генератор случайных чисел

Сообщение PANYTA »

Здравствуйте.
А кто-то занимался генерацией случайных чисел?
Не генератором псевдослучайных чисел, а именно случайных.

Заморочка такая:
Имеем 8ми битный таймер, который мотает себе по кругу. Нажимаем кнопку,
считываем таймер - имеем Случайное число. Восьмибитное.
А мне надо к примеру трехбайтное. Как быть?
На борту имею Только восьмибитный таймер. Ну такой контроллер, и поменять
его нет возможности. Выхода нет?
Реклама
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Re: Генератор случайных чисел

Сообщение Dr. Alex »

А таймер только один, или их несколько?
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Реклама
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Re: Генератор случайных чисел

Сообщение Dr. Alex »

Мда, или завести переменную, в которую заносить количество переполнений таймера. Ну а после делать общий подсчёт....
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
c717411
Встал на лапы
Сообщения: 148
Зарегистрирован: Ср дек 29, 2010 21:19:03

Re: Генератор случайных чисел

Сообщение c717411 »

PANYTA писал(а): Заморочка такая:
Имеем 8ми битный таймер, который мотает себе по кругу. Нажимаем кнопку,
считываем таймер - имеем Случайное число.
имеем псевдослучайное число
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Генератор случайных чисел

Сообщение pyzhman »

А чем псевдослучайное не устраивает? Смущает приставк псевдо-? Так вы почитайте, что она на самом деле означает.
Docendo discimus
Реклама
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Генератор случайных чисел

Сообщение Jack_A »

c717411 писал(а):
PANYTA писал(а): Заморочка такая:
Имеем 8ми битный таймер, который мотает себе по кругу. Нажимаем кнопку,
считываем таймер - имеем Случайное число.
имеем псевдослучайное число
Ничего подобного. Если кнопка нажимается человеком ( не программой ), число в чистом виде - случайное. Псевдослучайное получается перебором по определенному алгоритму чисел, начиная с начального значения, и если это начальное значение при каждом запуске одно и то же - получаем одну и ту же последовательность. Этим пользуются при отладке устройств ( программ ), потому что если использовать чисто случайную последовательность, возникает неопредеденность : изменение поведения устройства ( программы ) вызвано вносимыми в нее при отладке изменениями -- или же это реакция на другую случайную последовательность.
PANYTA писал(а): Нажимаем кнопку
- Вот это ключевой элемент. Генератором случайных чисел в этом случае будет человек, нажимающий кнопку, а таймер только фиксирует результат.
Последний раз редактировалось Jack_A Вт мар 06, 2012 18:42:43, всего редактировалось 1 раз.
Реклама
Аватара пользователя
kotpalych
Электрический кот
Сообщения: 1067
Зарегистрирован: Пн ноя 21, 2011 16:45:00

Re: Генератор случайных чисел

Сообщение kotpalych »

Можно использовать , например , дребезг контактов кнопки или состояние таймера в момент нажатия и отпускания кнопки и количество циклов таймера между ними.
Невозможно починить то, что не сломалось.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6312
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: Генератор случайных чисел

Сообщение Jack_A »

kotpalych писал(а):Можно использовать , например , дребезг контактов кнопки или состояние таймера в момент нажатия и отпускания кнопки и количество циклов таймера между ними.
Или запустить генератор псевдослучайных чисел со сколь угодно большим интервалом апериодичности, а нажате кнопки будет случайным образом "выхватывать" из этой последовательности число, которое в результате получит "двойную рандомизацию" - от алгоритма и от человека.
c717411
Встал на лапы
Сообщения: 148
Зарегистрирован: Ср дек 29, 2010 21:19:03

Re: Генератор случайных чисел

Сообщение c717411 »

Jack_A писал(а):Генератором случайных чисел в этом случае будет человек
мда =) Человек==ГСЧ :)
Аватара пользователя
PANYTA
Встал на лапы
Сообщения: 87
Зарегистрирован: Пн мар 30, 2009 07:38:28
Откуда: Бурятия

Re: Генератор случайных чисел

Сообщение PANYTA »

Dr. Alex писал(а):количество переполнений таймера
Чёт я об этом не подумал... Тут и три байта можно , и больше.
Спасибо :)
Аватара пользователя
Psych
Опытный кот
Сообщения: 848
Зарегистрирован: Ср мар 02, 2011 07:47:39
Откуда: Уфа

Re: Генератор случайных чисел

Сообщение Psych »

Лучше делать на АЦП с последними шумящими разрядами.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: Генератор случайных чисел

Сообщение pyzhman »

математику выложите, пожалуйста, чем лучше. относительно того же, скажем, конгруэнтного генератора псч.
Docendo discimus
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

Re: Генератор случайных чисел

Сообщение Мастер Ломастер »

я бы использовал число из таймера для инициализации стандартной для Си функции rand() - а уже после инициализации генератора с ее помощью получать случайное чесло нужной разрядности. если считать переполнения таймера то при определенном навыке в нажимании кнопки можно получить не случайные, а очень близкорасположенные числа. а с rand() это получится вряд ли.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
ANALOG
Мучитель микросхем
Сообщения: 444
Зарегистрирован: Вс ноя 28, 2010 15:18:52
Откуда: Минск

Re: Генератор случайных чисел

Сообщение ANALOG »

Я тоже сейчас делаю одну штуку на МК и мне понадобилось случайное чило. Изначально план был такой: спаять мультивибратор (или еще какой-нибудь генератор) с частотой в несколько раз выше тактовой. Когда в программе понадобится случайное число - хватать поочереди лог. уровни с него и пихать в байт. Правда, прийдется отслюнявить под это дело лишнюю ножку, но зато можно нагенерировать сколько угодно байт и независимо от нажатий кнопки.

Хотя теперь я наверное, сделаю с какого-нибудь таймера - это попроще будет.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Генератор случайных чисел

Сообщение GP1 »

PANYTA писал(а):
Dr. Alex писал(а):количество переполнений таймера
Чёт я об этом не подумал... Тут и три байта можно , и больше.
Спасибо :)
есть ещё вариант:
генератор шума (Д814 на малых токах шумят как сволочи) - триггер Шитта
а)- вход ICP счетчика T1 (применительно к АВРкам) - превышен порог в ICR некоторое число, N последовательных чтения получаем N*2 байтное случайное число
б) счетный вход + таймер формирующий образцовый интервал ( недостаток 2 таймера)
в) вход INTx + счетчик, по прерыванию считываем значение счетчика.
...
наверняка кто-то ещё предложит кучу способов, выбор за вами. :beer:
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Генератор случайных чисел

Сообщение BOB51 »

"стандартное" решение см. "Искусство схемотехники" от Хоровица/Хилла
программный вариант до N байт длиной
весьма симпатично выглядят 8 таких ГСЧ с выдачей данных в общий байт для светиков... правда голова потом может ...
:beer:
Аватара пользователя
Dr. Alex
Это не хвост, это антенна
Сообщения: 1438
Зарегистрирован: Вт окт 28, 2008 09:00:18
Откуда: Украина, Харьков
Контактная информация:

Re: Генератор случайных чисел

Сообщение Dr. Alex »

В качестве генератора можно использовать младшие разряды АЦП :idea: :idea: :idea:
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»