Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Чем быстро проверить нормальное распределение
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
toweroff
Добрый день!
Сабж

Хочу проверить шум ADC в нулевом разряде, буду формировать из этого шума какие-то значения (8, 16, 32 бит) в виде массива порядка 1000-10000 значений

Этот массив нужно скормить чему-то что бы проверило на нормальное распределение (оно же "белый шум", правильно?)

Чем можно сделать?
zombi
Задавал когда то подобный вопрос.
http://electronix.ru/forum/index.php?showt...st&p=837433
Мне посоветовали в гоогле искать DIEHARD tests.
Искал. Нашол. Работало. Но ужо забыл где и что.
alexvu
Постройте гистограмму в любой программе и посмотрите на нее
R.A.K.
Цитата(toweroff @ Feb 22 2012, 16:19) *
что бы проверило на нормальное распределение (оно же "белый шум", правильно?)

Не, не правильно sm.gif

К тому же шум квантования имеет (в теории sm.gif ) равномерное распределение
kovigor
Цитата(toweroff @ Feb 22 2012, 16:19) *
Добрый день!
Сабж

Хочу проверить шум ADC в нулевом разряде, буду формировать из этого шума какие-то значения (8, 16, 32 бит) в виде массива порядка 1000-10000 значений

Этот массив нужно скормить чему-то что бы проверило на нормальное распределение (оно же "белый шум", правильно?)

Чем можно сделать?


Дональда Кнута почитайте, кажется, второй том. Там это очень подробно разобрано. А еще книжку Шелеста "Микрокалькуляторы в физике". От себя добавлю, что для получения случайной выборки одного только разряда АЦП будет недостаточно, в чем я и убедился на личном опыте ...

P.S. У Шелеста это стр. 51
zombi
To toweroff: у меня на старом винте может сохранилось, если чё черкни, поищу.
toweroff
Цитата(zombi @ Feb 22 2012, 17:24) *
To toweroff: у меня на старом винте может сохранилось, если чё черкни, поищу.

поищи, пожалуйста
что-то я с diehard'ом не разберусь... может и правда самому наваять тест? sm.gif
только вот вопрос в правильности того, что я там наваяю... biggrin.gif хотелось бы 100% утилиты

Цитата(kovigor @ Feb 22 2012, 17:09) *
От себя добавлю, что для получения случайной выборки одного только разряда АЦП будет недостаточно, в чем я и убедился на личном опыте ...

а в чем причина?

Цитата(kovigor @ Feb 22 2012, 17:09) *
P.S. У Шелеста это стр. 51

угу.. смотрю
zombi
Цитата(toweroff @ Feb 22 2012, 16:36) *
поищи, пожалуйста

Вспомнил ссылку ENT
Tanya
Цитата(toweroff @ Feb 22 2012, 16:19) *
Хочу проверить шум ADC в нулевом разряде, буду формировать из этого шума какие-то значения (8, 16, 32 бит) в виде массива порядка 1000-10000 значений

Этот массив нужно скормить чему-то что бы проверило на нормальное распределение (оно же "белый шум", правильно?)

Неправильно. Распределение последнего бита будет распределением Бернулли. В стационарном случае.
Но есть грандиозная теорема о предельном распределении. Гауссовом. Вот про это и читайте.
Только... какой в этом толк?
kovigor
Цитата(toweroff @ Feb 22 2012, 17:36) *
а в чем причина?


Полученные таким образом случайные числа проваливают даже простейшие тесты на случайность.

P.S. Одного источника энтропии обычно бывает мало. Надо комбинировать случайные данные от нескольких источников.
zombi
Использую Xorshift128 и все нормуль!
skripach
Цитата
Чем быстро проверить нормальное распределение, массив случайных величин

Excel офисный.
toweroff
Цитата(zombi @ Feb 22 2012, 18:25) *
Использую Xorshift128 и все нормуль!

да не в том дело. Начальный SEED тоже где-то надо брать
kovigor
Цитата(toweroff @ Feb 22 2012, 18:32) *
да не в том дело. Начальный SEED тоже где-то надо брать


Для ARM я использовал готовую библиотеку LibTomCrypt, там есть несколько генераторов случайных чисел, использующих энтропию от множества источников.
zombi
Цитата(toweroff @ Feb 22 2012, 17:32) *
да не в том дело. Начальный SEED тоже где-то надо брать

Ну да ...
Просто у меня на борту NVRAM имеется. А начальная инициализация при первом прожиге (random() из Delphy).
kovigor
Цитата(zombi @ Feb 22 2012, 18:42) *
Просто у меня на борту NVRAM имеется. А начальная инициализация при первом прожиге (random() из Delphy).


Так в любом Си-компиляторе есть функция генерации случайных чисел. И решительно все равно (или почти все равно), какой это компилятор - из состава Delphi, или тот же Codevision или IAR. Нет смысла генерить числа генератором из Delphi, их точно так же можно сгенерить прямо в МК ...
zombi
Цитата(kovigor @ Feb 22 2012, 17:47) *
Так в любом Си-компиляторе есть функция генерации случайных чисел. И решительно все равно (или почти все равно), какой это компилятор - из состава Delphi, или тот же Codevision или IAR. Нет смысла генерить числа генератором из Delphi, их точно так же можно сгенерить прямо в МК ...

Да 100% без разницы в чём на PCшке генерить! я просто написал чем генерю лично я biggrin.gif

А как "прямо в МК" начальный SEED сгенерить???
Tanya
Цитата(kovigor @ Feb 22 2012, 18:05) *
Полученные таким образом случайные числа проваливают даже простейшие тесты на случайность.

Это как?
Вот подряд сто единиц, а потом - сто нулей. Проваливает?
Меня вот сама постановка вопроса смущает ужасно. Что хотим-то?
toweroff
Цитата(Tanya @ Feb 22 2012, 18:58) *
Что хотим-то?

хотим попробовать использовать ADC в качестве ГСЧ или, если уж там все не так хорошо, хотя бы в качестве SEED
Tanya
Цитата(toweroff @ Feb 22 2012, 19:25) *
хотим попробовать использовать ADC в качестве ГСЧ или, если уж там все не так хорошо, хотя бы в качестве SEED

Ваш жаргон мне непонятен. Последний (и не только) бит будет подчиняться простому такому распределению.
0 с некоторой вероятностью, 1 с вероятностью 1 - вероятность нуля.
kovigor
Цитата(Tanya @ Feb 22 2012, 19:30) *
Ваш жаргон мне непонятен. Последний (и не только) бит будет подчиняться простому такому распределению.
0 с некоторой вероятностью, 1 с вероятностью 1 - вероятность нуля.

Я не хочу сейчас затевать бесконечную дискуссию о "случайности" случайных чисел. Интересующихся отсылаю к соотв. литературе - первым делом к книге Кнута. Там это очень подробно рассматривается на более чем сотне страниц. Читать - не перечитать. Еще можно Брюса Шнайера глянуть "Прикладную криптографию", как приятное чтение перед сном ...
Tanya
Цитата(kovigor @ Feb 22 2012, 20:00) *
Я не хочу сейчас затевать бесконечную дискуссию о "случайности" случайных чисел. Интересующихся отсылаю к соотв. литературе - первым делом к книге Кнута. Там это очень подробно рассматривается на более чем сотне страниц. Читать - не перечитать. Еще можно Брюса Шнайера глянуть "Прикладную криптографию", как приятное чтение перед сном ...

У Кнута ничего такого не может рассматриваться. Ведь речь идет не о генерации некоторой последовательности псевдослучайных чисел.
А о физической реальности. Так вот предельная теорема гласит, что сумма достаточно большого количества случайных чисел с любым распределением будет распределена по Гауссу. А мы априори предполагаем, что то, что мы измеряем именно такая сумма и есть.
В априорном же предположении о стационарности. Поэтому проверять распределение полезно.
Можно своими руками убедить свои же мозги в справедливости предельной теоремы.
zombi
Цитата(Tanya @ Feb 22 2012, 20:23) *
Так вот предельная теорема гласит, что сумма достаточно большого количества случайных чисел с любым распределением будет распределена по Гауссу. А мы априори предполагаем, что то, что мы измеряем именно такая сумма и есть.
В априорном же предположении о стационарности.

Праильно ли я Вас понял: поскольку на входе ацп величина напряжения НЕ распределённая по Гауссу то и результат измерения соответственно тоже.

Цитата(Tanya @ Feb 22 2012, 20:23) *
Поэтому проверять распределение полезно.

Ага.

Ув. toweroff, если не затруднит сообщите плиз результат тестирования ГСЧ на ацп.
kovigor
Цитата(toweroff @ Feb 22 2012, 18:25) *
хотим попробовать использовать ADC в качестве ГСЧ или, если уж там все не так хорошо, хотя бы в качестве SEED



А вот, кстати, статья почти об этом же. Там же перечисляются и тестовые инструменты:

http://habrahabr.ru/blogs/python/62237/
Tanya
Цитата(zombi @ Feb 22 2012, 21:21) *
Праильно ли я Вас понял: поскольку на входе ацп величина напряжения НЕ распределённая по Гауссу то и результат измерения соответственно тоже.

Неправильно понимаете. И на только меня. И не только Вы.
Alexashka
Цитата(toweroff @ Feb 22 2012, 16:19) *
Хочу проверить шум ADC в нулевом разряде, буду формировать из этого шума какие-то значения (8, 16, 32 бит) в виде массива порядка 1000-10000 значений

Этот массив нужно скормить чему-то что бы проверило на нормальное распределение (оно же "белый шум", правильно?)

Цитата
Иногда ошибочно предполагается, что гауссовский шум (то есть шум с гауссовским распределением по амплитуде — см. нормальное распределение) обязательно является белым шумом. Однако эти понятия неэквивалентны. Гауссовский шум предполагает распределение значений сигнала в виде нормального распределения, тогда как термин «белый» имеет отношение к корреляции сигнала в два различных момента времени (эта корреляция не зависит от распределения амплитуды шума). Белый шум может иметь любое распределение — как Гаусса, так и распределение Пуассона, Коши и т. д

Источник
Так Вам нужен белый шум или нормальное распределение?

Скорее всего Вам надо убедиться, что
Цитата
это случайный процесс с нулевым математическим ожиданием, имеющий автокорелляционную функцию, являющуюся дельта-функцией Дирака.

Цитата
К примеру, двоичный сигнал, который может принимать только значения, равные нулю или единице, будет являться белым шумом только если последовательность нулей и единиц будет некоррелирована.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.