Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Просто вырезать кусок диапазона можно, но теряются отсчёты
Отправлено
vitalyn 08 мая 2008 г. 06:25
В ответ на:
Да, отправлено
Леонид Иванович 08 мая 2008 г. 01:58
У меня жена кандидатскую по математике когда писала, как раз рандомизацией случайных последовательностей занималась, только она решала задачу в общем виде. Есть на входе символы {a1,..,aN} с вероятностями {p1,..,pN}. Нужно получить на выходе символы {b1,..,bM} с вероятностями {q1,..,qM}. Вторая цель - сделать это максимально эффективно, с минимальными потерями, т.е. получить максимальный поток информации на выходе.
Проблема сильно усложняется, если источник шума не бернуллиевский, а образует марковскую цепь (вероятность появления символа зависит от K предыдущих символов).
Работы подобного рода публикуются примерно в десятке специализированных буржуйских журналов по теории чисел и теории информации, например, в сборнике IEEE по Information Theory.
Помнится, я тоже делал генератор случайных чисел на основе звуковой карты. Исследовал статистику исходной и обработанной последовательностей при помощи пакета тестов DieHard.
В твоём случае задача гораздо проще. Если вычислительных ресурсов достаточно, то я бы сначала рандомизировал исходный поток:
En+1 <= HASH(En,RANDOMn)
а потом из E получал бы числа в заданном диапазоне. При использовании криптографически хорошей хэш-функции (хотя бы даже MD5) характер распределения с исходного физического генератора не играет никакой роли - хэш-функция все нехорошести замаскирует.
Составить ответ | Вернуться на конференцию
Ответы