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

 
 
> Генератор случайных чисел.
Stanislav_S
сообщение Jul 21 2007, 13:34
Сообщение #1


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Потребовалось тут реализовать ГСЧ на AVR. Интересует каков алгоритм реализации, числа должны лежать в диапазоне 0 - 9. В детстве делал такую штуку на МК61 smile.gif, но к сожалению как это делать в памяти совершенно не отложилось smile.gif


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SIA
сообщение Jul 21 2007, 22:24
Сообщение #2


Местный
***

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



Цитата(Stanislav_S @ Jul 21 2007, 17:34) *
Потребовалось тут реализовать ГСЧ на AVR. Интересует каков алгоритм реализации, числа должны лежать в диапазоне 0 - 9. В детстве делал такую штуку на МК61 smile.gif, но к сожалению как это делать в памяти совершенно не отложилось smile.gif

При таком диапазоне - всего 10 значений - погрешность от дискретности может сравняться с погрешностью от периодичности уже при длине таблицы в 100-200 чисел. Тогда проще всего зашить табличку (50-100 байт всего). Если генерить - то либо ПСП, либо линейный конгруэнтный метод (правда, там множить надо).
Go to the top of the page
 
+Quote Post
Stanislav_S
сообщение Jul 22 2007, 08:32
Сообщение #3


извечный пессимист
*****

Группа: Свой
Сообщений: 1 113
Регистрация: 9-10-06
Из: Днепропетровск
Пользователь №: 21 125



Цитата(SIA @ Jul 22 2007, 03:24) *
При таком диапазоне - всего 10 значений - погрешность от дискретности может сравняться с погрешностью от периодичности уже при длине таблицы в 100-200 чисел. Тогда проще всего зашить табличку (50-100 байт всего). Если генерить - то либо ПСП, либо линейный конгруэнтный метод (правда, там множить надо).

А можно подробнее о этих методах, или хотя бы какие ключевые слова для поиска?


--------------------
Slaves are those of this world
Given freedom to lay chains upon The Master
The wolf is no longer free
Release the chains and come for me
Go to the top of the page
 
+Quote Post
SIA
сообщение Jul 22 2007, 13:43
Сообщение #4


Местный
***

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



Цитата(Stanislav_S @ Jul 22 2007, 12:32) *
А можно подробнее о этих методах, или хотя бы какие ключевые слова для поиска?

Таблица - тут, думаю, все очевидно.
ПСП - это регистр сдвига с обратной связью, формирующий псевдослучайную последовательность максимальной длины (для твоей задачи за глаза хватит длины 15 бит). Делается его программная модель, и выбираются 4 бита из него. Единственная проблема - он двоичный, а тебе нужен диапазон 0...9, придется отбрасывать числа 10-15. При получении следующего числа для уничтожения явной корреляции нужно "прокручивать" регистр не менее, чем на его длину, например, на 16 циклов.
Линейный конгруэнтный метод - берем начальное число, следующие генерим из него:
x[n+1] = (a*x[n]+ c) mod M, a, c, М - константы. для M = степень двойки , ПСЧ имеет максимальную длину M, когда C - нечётное, а A mod 4 = 1.

Вот простая подборка по теме
http://www.uni-vologda.ac.ru/students/pm02...eudorandom.html
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th June 2025 - 02:33
Рейтинг@Mail.ru


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