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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Генератор шума на AVR, Как сделать на ASM
Oldring
сообщение Dec 5 2006, 11:42
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(_Bill @ Dec 5 2006, 11:35) *
Вообще-то, на каждой итерации я использую все 31 бит.


Тогда это очень предсказуемый генератор. Потому что с вероятностью 1/2 очередное число ровно в 2 раза больше предыдущего.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Dec 5 2006, 12:25
Сообщение #32


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Цитата(add @ Dec 5 2006, 10:39) *
[attachment=8569:attachment]Странно что поиск ничего не дал?!
http://electronix.ru/forum/index.php?showtopic=22174&hl=

Мда-а, плохо быть бестолковым blush.gif . Я искал по форуму слово "псевдослуч, а просто "случайн" не догадался. Правда, поздно уже было. Попробую и этот RND. Спасибо.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
_Bill
сообщение Dec 5 2006, 12:33
Сообщение #33


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Oldring @ Dec 5 2006, 11:42) *
Цитата(_Bill @ Dec 5 2006, 11:35) *

Вообще-то, на каждой итерации я использую все 31 бит.


Тогда это очень предсказуемый генератор. Потому что с вероятностью 1/2 очередное число ровно в 2 раза больше предыдущего.

Согласен, надо брать 1 бит. И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Dec 5 2006, 12:35
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(_Bill @ Dec 5 2006, 12:33) *
И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.

Это зачем?


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
_Bill
сообщение Dec 5 2006, 14:14
Сообщение #35


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Oldring @ Dec 5 2006, 12:35) *
Цитата(_Bill @ Dec 5 2006, 12:33) *

И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.

Это зачем?

Для получения случайных чисел с равномерным распределением в диапазоне 0 .. 255. Или нет?
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 5 2006, 15:04
Сообщение #36


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Oldring @ Dec 5 2006, 10:00) *
Если я не ошибся с переводом восьмеричных чисел в шестнадцатеричные wink.gif использованный мною полином дает последовательность максимальной длины 2^24-1. Можете это протестировать экспериментально.

Да, Вы не ошибаетесь. Проверил.
Действительно зацикливание происходит после 2^24-1 бит.
Цитата
Цитата(singlskv @ Dec 5 2006, 02:12) *

У IAR при старте генератора псевдослучайных чисел с 1 зацикливание происходит примерно
после 2000 значений, при старте с 2 чуть побольше, но тоже не так уж и много.


Смешно.

Настолько стало любопытно что даже посмотрел что IAR генерирует, хоть я и не брался за AVR уже давно. IAR3.2. Применен 32-битный линейный конгруэнтный генератор, при этом берутся старшие 16 бит. Реализация использует библиотечную функция умножения 32-битных беззнаковых чисел. То есть, медленно но стандартно. Скорее всего, Вас ввело в заблуждение то, что для такого генератора повторение 16-битного числа не означает повторение последовательности. Период повторения последовательности должен быть равен 2^32 чисел.

Проверял на IAR 4.20 .
При старте с 1 зацикливание происходило где-то около 2000 значений, при этом
если запустить дальше, то значение 1 повторяется с одинаковыми промежутками.
Может они там с округлениями чего-то начудили ?

А вот такой вопросик.
При Вашем варианте полинома распределение 16 битных значений получается равномерным ?
Ну например если взять 1000 значений подряд и посмотреть равномерно ли они
распределятся по всему диапазону ?
Пробовали ли Вы проводить такую статистику ?
Go to the top of the page
 
+Quote Post
Oldring
сообщение Dec 5 2006, 18:56
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(_Bill @ Dec 5 2006, 14:14) *
Цитата(Oldring @ Dec 5 2006, 12:35) *

Цитата(_Bill @ Dec 5 2006, 12:33) *

И считать количество 1-бит на некотором разряде за определенное количество циклов, скажем, за 256.

Это зачем?

Для получения случайных чисел с равномерным распределением в диапазоне 0 .. 255. Или нет?


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

Цитата(singlskv @ Dec 5 2006, 15:04) *
Проверял на IAR 4.20 .
При старте с 1 зацикливание происходило где-то около 2000 значений, при этом
если запустить дальше, то значение 1 повторяется с одинаковыми промежутками.
Может они там с округлениями чего-то начудили ?


Где-то у мня тоже валялся 4.2... Кажется, когда-то использовал... Лень сейчас искать. Можете прислать мне результат компиляции теста? Посмотрю под отладчиком.

Цитата
А вот такой вопросик.
При Вашем варианте полинома распределение 16 битных значений получается равномерным ?
Ну например если взять 1000 значений подряд и посмотреть равномерно ли они
распределятся по всему диапазону ?
Пробовали ли Вы проводить такую статистику ?


Я - нет. Обычно считается что LFSR выдает равномерное распределение. Неприятности могут начинаться со статистикой более высокого порядка и для некоторых разрядов чисел.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Dec 5 2006, 20:54
Сообщение #38


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Oldring @ Dec 5 2006, 18:56) *
Где-то у мня тоже валялся 4.2... Кажется, когда-то использовал... Лень сейчас искать. Можете прислать мне результат компиляции теста? Посмотрю под отладчиком.

Э...Э...Э Виноват, исправлюсь ...
Нашел свои исходники по которым тестировал, ну и нашел в них ошибочку,
типа циферку не подправил blink.gif
Так что, прошу прощения у общественности, за дезинформацию...

у IAR с псевдослуайными числами все в порядке
Проверенно electronix.ru smile.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 15th July 2025 - 16:50
Рейтинг@Mail.ru


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