Быстро Создавайте Массивы Случайных Чисел Для Приложений Моделирования, Статистической Оценки И Повторной Выборки.

Имитационное моделирование с использованием методов Монте-Карло В настоящее время он используется практически во всех сферах оперативной деятельности, требующих многократного принятия решений на основе анализа данных, поступающих из внешнего мира.

В этом случае важную роль начинают играть качество, производительность и доступность генераторов случайных чисел, которые используются для придания абстрактному методу особенностей реальной задачи, решаемой специалистом.

Как я недавно узнал, этот вопрос начинает играть решающую роль при переходе к параллельному программированию.

Вы тоже сталкивались с этой проблемой, и хотите знать, как можно быстро получить массивы случайных чисел с нужным распределением в Windows? /* В статье использовано значительное количество цитат на английском языке, предполагаю достаточный уровень языковой подготовки читателя */ Одно из моих приложений регулярно запускает имитационные модели для длинной последовательности факторов из базы данных.

Не вдаваясь в подробности, недавно возникла задача изучения вероятностных характеристик повторяющегося бинарного (двух исходного) процесса, имеющего сильный элемент случайности, на основе истории его реальных реализаций с целью уменьшения неопределенности при прогнозировании будущих результатов.

.

Реализации процесса считаются независимыми друг от друга и одинаково (нормально) распределенными, процесс считается стационарным.

Целью является максимально точное предсказание результатов N последовательных реализаций процесса, что подразумевает оценку средней и наименьшей ожидаемой частоты положительных реализаций процесса за период длиной N. Здесь можно использовать стандартный статистический подход с расчетом уровня достоверности, при котором реализации случайной величины не будут отклоняться от ее ожидания более чем на k значений ее стандартного отклонения.

Этот подход основан на идее сходимости частот к вероятностям ( Теорема Бернулли ).

Конечно, очень заманчиво вычислить средние значения на основе нескольких сотен тысяч реализаций процесса, записанных в базе данных, но поскольку у меня есть ограничение на длину подвыборки N (порядка нескольких десятков), то случайный характер процесса на ограниченной выборке непременно преподнесет мне сюрпризы в виде отклонений от средней.

Именно поэтому мне необходимо с заданной степенью уверенности знать, какие максимально возможные отклонения от средней ожидаемой частоты следует «учитывать» для данный Н.

Требуемые оценки я решил получить методом статистическая начальная загрузка (бутстреппинг) — повторная генерация выборок N реализаций методом Монте-Карло из основного набора примеров.

Суть метода заключается в формировании из существующей выборки достаточно большого количества псевдовыборок, состоящих из случайных комбинаций исходного набора элементов (в результате в одной псевдовыборке некоторые исходные элементы могут появляться несколько раз, а другие могут вообще отсутствовать), и для каждой полученной псевдовыборки определяют значения анализируемых статистических характеристик с целью изучения их разброса.

По предварительным оценкам, мне потребуется сгенерировать ~10 миллионов псевдовыборок для каждой из тысяч подгрупп параметров.

С учетом объема данных и других факторов речь идет о десятках часов серверного вычислительного времени.

Прототип приложения-симулятора был написан и протестирован на Visual Basic 6. Однако после компиляции многопоточной боевой версии неожиданно выяснилось, что при запуске симуляции в несколько потоков нагрузка на ядро ЦП составила всего 5% вместо ожидаемого.

100%.

Базовый анализ горячих точек в профилировщике Intel Vtune Amplifier не выявил ничего необычного.

Я был уверен, что симулятор должен полностью загрузить работой все потоки, поскольку ничего, кроме арифметических операций и доступа к памяти по случайным индексам, код не содержал: Теги: #имитационное моделирование #Метод Монте-Карло #статистическая оценка #генерация повторной выборки #Intel MLK VSL #генерация случайных чисел #Windows #Параллельное программирование #visual Basic 6 #vba #Excel #Office #Высокая производительность #Параллельное программирование

Вместе с данным постом часто просматривают: