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

 
 
 
Reply to this topicStart new topic
> Генератор случайных чисел, для многомерной монтекарловки (monte carlo simulation/integration)
iiv
сообщение Feb 10 2014, 15:10
Сообщение #1


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Добрый день,

долго занимаясь вычислительной математикой прошел стороной сабж, и, к своему стыду, кроме x_{i+1}=(c+x_i*a)/b ничего не знаю...

Посоветуйте, пожалуйста, простой в вычислении генератор случайных чисел для такой задачи:

есть 2-3-4-...гиперкуб размерности n1*n2*...*nk

Мне необходимо получить в нем M псевдослучайных точек, так чтобы для всех гиперплоскостей n1*...*ni*...*nk было не менее [M/ni] и не более [M/ni]+1 точек, полагая, что [M/ni] больше 0, и [] - операция целое.

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

Очень желательно иметь еще возможность сгенерить такие M точек, а потом увеличить до M_+, и догенерить (M_+)-M оставшихся точек.

Хочу формулу или понятный алгоритм в виде блок-схемы, так как мне надо имплементировать его на CUDA, FPGA, и восьмибитнике, так чтобы не было использовано много памяти (не более 512 байт в восмибитнике, или 128 четырехбайтных слов в CUDA или один M9K в плиске). Из-за этого ограничения я не могу запомнить предыдущие сгенеренные точки и их использовать при вычислении следующих точек.

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

Долго и упорно читать монографии и совеццкие книги - времени нет, да и мало вероятно, что там это есть.

Нужна идея, ссылка на статью по теме, или ссылка на описание похожего алгоритма.

Кто в теме, пожалуйста, посоветуйте!

Спасибо

ИИВ
Go to the top of the page
 
+Quote Post
Major
сообщение Feb 27 2014, 07:16
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Не спец в МК, но заинтересовало следующее:
Цитата
На пальцах для 2-х мерного случая это означает, что число таких псевдослучайных точек внутри каждой строки равно друг другу или отличается не более, чем на единицу и то же самое действительно для всех столбцов.

С какой вероятностью не отличается?
Я не могу понять как такое условие можно записать для обрыва генератора случайных чисел.
Если всегда не более чем на 1 с вероятностью 1, то это случайным не будет. Любой момент случайной величины(выборки) всегда случайная величина.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 27 2014, 08:10
Сообщение #3





Guests






Что-то не пойму в чем проблема.
Используйте RNG на N точек в плотном диапазоне целых чисел, к примеру 0..10 на 11 чисел.
Затем масштабируете ( растягиваете ) на необходимый диапазон.
К примеру, для диапазона 0..1000 надо умножать очередное число на 100.
Получите случайные числа 0, 100, 200...1000.
P.S.
Если я правильно Вас понял.
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Feb 27 2014, 09:39
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933



МБ как-нибудь это поможет. http://en.wikipedia.org/wiki/Xorshift


--------------------
Go to the top of the page
 
+Quote Post
Major
сообщение Feb 27 2014, 11:19
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Извиняюсь. Похоже я ТС не понял.
Ему не надо Монте-Карло, ему нужен генератор расстановки и похоже случайность его не интересует в смысле МК.
В МК важна независимость выборок. А так как они все случайные, то с вероятность 1 нельзя гарантировать разброс в 1 точку (в силу случайности).
Go to the top of the page
 
+Quote Post
iiv
сообщение Feb 27 2014, 13:01
Сообщение #6


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Цитата(Major @ Feb 27 2014, 17:19) *
А так как они все случайные, то с вероятность 1 нельзя гарантировать разброс в 1 точку (в силу случайности).


вот возьмем пару примеров
1. матрица перестановки - понятно, что ее можно как-то случайным образом сгенерить - ее свойства - одна единичка в каждом столбце и строке, если мне надо только N точек сгенерить, мне достаточно получить хороших псевдослучайный генератор матриц перестановок. Думаю, что такие существуют sm.gif
2. если взять какой-то (гепотетически хороший) генератор и им генерить пары точек на плоскости, так, что для
первых N точек мы будем аксептировать только те пары, которые появляются в в такой строке и столбце, в котором до этого ничего не было,
для следующих N точек мы будем аксептировать только те пары, которые появляются в такой строке и столбце, в котором до этого было только по одному элементу и такая пара до этого ни разу не генерилась,
и так далее...

... а еще лучше, для многомерного случая...

Если есть много памяти, то такой генератор можно на раз построить из практически любого генератора случайных чисел, но мне надо без использования дополнительной памяти и за конечное (и точно сверху ограниченное) число итераций.
Go to the top of the page
 
+Quote Post
Major
сообщение Feb 27 2014, 15:14
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



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

Может вам нужны М-последовательности?
На периоде (после полного прогона) бинарной МП число единиц минус число нулей равно 1. Фабрика МП даст искомые вектора/матрицы.

Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Feb 27 2014, 19:35
Сообщение #8





Guests






Нэ, я этот поток сознания не сумел воспринять адекватно.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:11
Рейтинг@Mail.ru


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