Генератор случайных чисел
Генератор случайных чисел
Здравствуйте.
А кто-то занимался генерацией случайных чисел?
Не генератором псевдослучайных чисел, а именно случайных.
Заморочка такая:
Имеем 8ми битный таймер, который мотает себе по кругу. Нажимаем кнопку,
считываем таймер - имеем Случайное число. Восьмибитное.
А мне надо к примеру трехбайтное. Как быть?
На борту имею Только восьмибитный таймер. Ну такой контроллер, и поменять
его нет возможности. Выхода нет?
А кто-то занимался генерацией случайных чисел?
Не генератором псевдослучайных чисел, а именно случайных.
Заморочка такая:
Имеем 8ми битный таймер, который мотает себе по кругу. Нажимаем кнопку,
считываем таймер - имеем Случайное число. Восьмибитное.
А мне надо к примеру трехбайтное. Как быть?
На борту имею Только восьмибитный таймер. Ну такой контроллер, и поменять
его нет возможности. Выхода нет?
- Реклама
- Dr. Alex
- Это не хвост, это антенна
- Сообщения: 1438
- Зарегистрирован: Вт окт 28, 2008 09:00:18
- Откуда: Украина, Харьков
- Контактная информация:
Re: Генератор случайных чисел
А таймер только один, или их несколько?
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
- Dr. Alex
- Это не хвост, это антенна
- Сообщения: 1438
- Зарегистрирован: Вт окт 28, 2008 09:00:18
- Откуда: Украина, Харьков
- Контактная информация:
Re: Генератор случайных чисел
Мда, или завести переменную, в которую заносить количество переполнений таймера. Ну а после делать общий подсчёт....
Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...
Re: Генератор случайных чисел
имеем псевдослучайное числоPANYTA писал(а): Заморочка такая:
Имеем 8ми битный таймер, который мотает себе по кругу. Нажимаем кнопку,
считываем таймер - имеем Случайное число.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Генератор случайных чисел
А чем псевдослучайное не устраивает? Смущает приставк псевдо-? Так вы почитайте, что она на самом деле означает.
Docendo discimus
- Реклама
Re: Генератор случайных чисел
Ничего подобного. Если кнопка нажимается человеком ( не программой ), число в чистом виде - случайное. Псевдослучайное получается перебором по определенному алгоритму чисел, начиная с начального значения, и если это начальное значение при каждом запуске одно и то же - получаем одну и ту же последовательность. Этим пользуются при отладке устройств ( программ ), потому что если использовать чисто случайную последовательность, возникает неопредеденность : изменение поведения устройства ( программы ) вызвано вносимыми в нее при отладке изменениями -- или же это реакция на другую случайную последовательность.c717411 писал(а):имеем псевдослучайное числоPANYTA писал(а): Заморочка такая:
Имеем 8ми битный таймер, который мотает себе по кругу. Нажимаем кнопку,
считываем таймер - имеем Случайное число.
- Вот это ключевой элемент. Генератором случайных чисел в этом случае будет человек, нажимающий кнопку, а таймер только фиксирует результат.PANYTA писал(а): Нажимаем кнопку
Последний раз редактировалось Jack_A Вт мар 06, 2012 18:42:43, всего редактировалось 1 раз.
Re: Генератор случайных чисел
Можно использовать , например , дребезг контактов кнопки или состояние таймера в момент нажатия и отпускания кнопки и количество циклов таймера между ними.
Невозможно починить то, что не сломалось.
Re: Генератор случайных чисел
Или запустить генератор псевдослучайных чисел со сколь угодно большим интервалом апериодичности, а нажате кнопки будет случайным образом "выхватывать" из этой последовательности число, которое в результате получит "двойную рандомизацию" - от алгоритма и от человека.kotpalych писал(а):Можно использовать , например , дребезг контактов кнопки или состояние таймера в момент нажатия и отпускания кнопки и количество циклов таймера между ними.
Re: Генератор случайных чисел
мда =) Человек==ГСЧJack_A писал(а):Генератором случайных чисел в этом случае будет человек
Re: Генератор случайных чисел
Чёт я об этом не подумал... Тут и три байта можно , и больше.Dr. Alex писал(а):количество переполнений таймера
Спасибо
Re: Генератор случайных чисел
Лучше делать на АЦП с последними шумящими разрядами.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Генератор случайных чисел
математику выложите, пожалуйста, чем лучше. относительно того же, скажем, конгруэнтного генератора псч.
Docendo discimus
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: Генератор случайных чисел
я бы использовал число из таймера для инициализации стандартной для Си функции rand() - а уже после инициализации генератора с ее помощью получать случайное чесло нужной разрядности. если считать переполнения таймера то при определенном навыке в нажимании кнопки можно получить не случайные, а очень близкорасположенные числа. а с rand() это получится вряд ли.
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: Генератор случайных чисел
Я тоже сейчас делаю одну штуку на МК и мне понадобилось случайное чило. Изначально план был такой: спаять мультивибратор (или еще какой-нибудь генератор) с частотой в несколько раз выше тактовой. Когда в программе понадобится случайное число - хватать поочереди лог. уровни с него и пихать в байт. Правда, прийдется отслюнявить под это дело лишнюю ножку, но зато можно нагенерировать сколько угодно байт и независимо от нажатий кнопки.
Хотя теперь я наверное, сделаю с какого-нибудь таймера - это попроще будет.
Хотя теперь я наверное, сделаю с какого-нибудь таймера - это попроще будет.
- GP1
- Поставщик валерьянки для Кота
- Сообщения: 2401
- Зарегистрирован: Пт май 23, 2008 19:32:22
- Откуда: Россия, Волгоград
- Контактная информация:
Re: Генератор случайных чисел
есть ещё вариант:PANYTA писал(а):Чёт я об этом не подумал... Тут и три байта можно , и больше.Dr. Alex писал(а):количество переполнений таймера
Спасибо
генератор шума (Д814 на малых токах шумят как сволочи) - триггер Шитта
а)- вход ICP счетчика T1 (применительно к АВРкам) - превышен порог в ICR некоторое число, N последовательных чтения получаем N*2 байтное случайное число
б) счетный вход + таймер формирующий образцовый интервал ( недостаток 2 таймера)
в) вход INTx + счетчик, по прерыванию считываем значение счетчика.
...
наверняка кто-то ещё предложит кучу способов, выбор за вами.
Re: Генератор случайных чисел
"стандартное" решение см. "Искусство схемотехники" от Хоровица/Хилла
программный вариант до N байт длиной
весьма симпатично выглядят 8 таких ГСЧ с выдачей данных в общий байт для светиков... правда голова потом может ...

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

Порой мне кажется, что я делаю какое-то дерьмо, но когда я вижу, что делают другие, то я чувствую себя гением...



