powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / О разворачивании длинного целого в набор из 100 псевдослучайных действительных
2 сообщений из 2, страница 1 из 1
О разворачивании длинного целого в набор из 100 псевдослучайных действительных
    #40067216
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хочу поработать (в VBA) с большим количеством (псевдо-)случайных наборов по 100 действительных чисел:
X(i), i=1..100 (предположим, в диапазоне [0; 1] каждое, но это не важно)
-- так, что мне нужно будет накапливать результаты этой работы на диске и потом повторно обрабатывать.

Я не хочу сбрасывать на диск сами эти наборы, но хочу, чтобы каждый набор "разворачивался" из одного длинного целого (Dim key as Long) числа, которое служило бы "ключом" этого набора.

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

Первое, что приходит на ум -- инициировать этим ключом Rnd():
Код: vbnet
1.
Call Rnd(-Abs(key))

и заполнять набор сотней последовательных значений Rnd:
Код: vbnet
1.
2.
R(i) = Rnd()
X(i) = R(i)


Однако известно, что "мощность" Rnd всего 16 с хвостиком миллионов, а мне этого мало.

Оцените, пожалуйста, такую идею: сделать "на коленке" свой ГПСЧ, который, может быть, будет не слишком хорош по каким-то не доступным моему уму соображениям, но мощность которого точно будет все 4 миллиарда -- например, на основании какой-то простой арифметики по модулю 2^32, -- и порождать этим ГПСЧ -- из key -- свой набор "домотканых" псевдослучайных чисел S(i) (i = 1...100), а потом окончательно "микшировать" X(i) из R(i) и S(i):
Код: vbnet
1.
2.
X(i) = R(i) + S(i)
If X(i) > 1# then X(i) = X(i) - 1#
...
Рейтинг: 0 / 0
О разворачивании длинного целого в набор из 100 псевдослучайных действительных
    #40067407
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С т.зр. теорвер. Допустим, что оба слагаемых одинаково и равномерно распределены в одном интервале.
Тогда плотность суммы будет треугольной. Это значит, что в середине частота выпадания существенно выше, чем по краям. Этим сумма плоха, если нужна равновероятность. Но и об этом уже раньше говорилось, я помню, предлагалось стыковать бинарники.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / О разворачивании длинного целого в набор из 100 псевдослучайных действительных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]