HLFX.Ru Forum Страницы (4): [1] 2 3 4 »
Показать все 48 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Random numbers generator (https://hlfx.ru/forum/showthread.php?threadid=4247)


Отправлено XaeroX 19-01-2014 в 14:30:

Random numbers generator

Собственно, генератор в волатиле, наговнянный по-быстрому и основанный на rand(), меня не устраивает, потому что он не портабельный и в разных компиляторах ведёт себя по-разному, да и длина серии rand() оставляет желать лучшего.
В ку3, скажем, используется очень просто линейный конгруэнтный метод (ЛКМ), что считается предсказуемым и вообще плохим. (rand, кстати, тоже обычно ЛКМ, хотя это остаётся на усмотрение автора библиотеки CRT/LIBC).

Единственный известный мне нормальный альтернативный генератор - в Xash3D - это по сути генератор из сорцов бетки хл2 (c перебитым копирайтом...). Мне даже удалось узнать, что автор генератора из бетки - и вовсе не Valve, а товарищи Press и Teukolsky, а Valve внесла кое-какие модификации косметической формы. Алгоритм также опубликован в Numeric Recipes (NR) (возвращаясь к копирайтам в ксаше - атата, Дядя Миша, у Numeric Recipes очень анальная лицензия!) Но пока не могу найти оригинальную статью (может, у кого есть?)

Цитата:
W.H. Press, S.A. Teukolsky "Portable random number generators" // Comput. Phys. - 1992. - V. 6. - N 5. - P. 522-524.

Я нашёл работу, которая развивает их идеи (Marsaglia, Zaman, 1994), но хотелось бы докопаться до оригинала.
А просто так юзать код из этой статьи не хочу именно из-за анальности NR (к коей он и привязан). В общем, нужны оригинальные статьи, на которые будут ссылки, а не NR.

Собственно, вопросы такие:
1) Чем плох ЛКМ, помимо предсказуемости (ок, это важно для сетевой шифровки, где генерится ключ, но в основном в игровом процессе - не особо)?
2) Используете ли вы Монте-Карло?
3) Вне зависимости от ответа на вопрос 2, какой генератор псевдослучайных чисел используете вы и почему?

__________________

xaerox on Vivino


Отправлено thambs 19-01-2014 в 14:39:

это только про игры, или вообще в программах?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 19-01-2014 в 14:46:

Да без разницы -- я занимаюсь и волатилой, и молекулярной динамикой параллельно, вы же знаете.
Но всё же желательно быстрый.

Добавлено 19-01-2014 в 21:45:

Да, кстати, речь только о uniform-генераторах.

Добавлено 19-01-2014 в 21:46:

Кстати, генератор из бетки вот тут также почему-то называется "линейным конгруэнтным", хотя из кода это совершенно не очевидно, там как-то хитро всё...

__________________

xaerox on Vivino


Отправлено thambs 19-01-2014 в 14:53:

XaeroX

ну я у себя его просто rand() подобным образом переиницализирую. а монтекарло у меня для расчёта столкновений частиц между собой.

>молекулярной динамикой
оно ж, кстати, очень близко к PiC, только в твоём случае, насколько я помню, частица действует только на ближайших соседей, а в PiC -- на весь коллектив.

у тебя двухмерная или трёхмерная геометрия? как сортируешь частицы/дефрагментируешь массив, на каждом шаге?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 19-01-2014 в 14:56:

Цитата:
thambs писал:
частица действует только на ближайших соседей

Ближайшие соседи явно, остальное аппроксимируется, угу.
Цитата:
thambs писал:
у тебя двухмерная или трёхмерная геометрия? как сортируешь частицы/дефрагментируешь массив, на каждом шаге?

Трёхмерная. Кол-во частиц постоянно (NTP-ансамбль).
Да это не важно, мне сейчас конкретно для волатилы надо, я просто сразу пишу код с учётом того, что он может понадобиться в "серьёзных проектах", где принято цитировать источники.

__________________

xaerox on Vivino


Отправлено thambs 19-01-2014 в 15:01:

>(NTP-ансамбль).
эт. что то из биологии. а можешь примерно назвать сколько по порядку частиц в системе, и размеры сетки?
>остальное аппроксимируется, угу.
ур-ем пуассона?
>Кол-во частиц постоянно
граничные условия что ли периодические?
>Да это не важно
ну интересно ж про работу узнать

>как сортируешь частицы/дефрагментируешь массив
ну я к тому, как ты различаешь ближние и дальние. или просто хранишь отдельный массив с индексами вместо пересортировки? а сколько Мб/Гб занимает вся функция распределения?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 19-01-2014 в 15:14:

Цитата:
thambs писал:
а можешь примерно назвать сколько по порядку частиц в системе, и размеры сетки?

Порядок 10^4-10^5, больше требуется крайне редко (число атомов в глобулярном белке - порядка нескольких тысяч, вот если явный растворитель - ситуация меняется).
Цитата:
thambs писал:
ур-ем пуассона?

Хе-хе, если бы. По-разному. Если без явной воды - то generalized Born обычно.
Цитата:
thambs писал:
граничные условия что ли периодические?

Пока нет, т.к. растворитель неявный.
С явным буду делать периодические, и вместо аппроксимации - суммирование по Эвальду, это стандарт, в общем-то, уже пару-тройку десятков лет.
Цитата:
thambs писал:
ну я к тому, как ты различаешь ближние и дальние.

Они редко обновляются, так как в МД (биологической, по крайней мере) нет быстрых и резких переходов. STL-контейнеров пока хватает, как я уже сказал, размеры системы невелики.
В МД рандомы нужны для начальных скоростей и прочих стартовых корректив для преодоления локальных энергетических барьеров, а к Монте-Карло я так, пока присматриваюсь.

Добавлено 19-01-2014 в 22:14:

Цитата:
thambs писал:
эт. что то из биологии.

изобарно-изотермический ансамбль

__________________

xaerox on Vivino


Отправлено Дядя Миша 19-01-2014 в 15:27:

Цитата:
XaeroX писал:
Дядя Миша, у Numeric Recipes очень анальная лицензия!)

Да на здоровье же

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено fire64 19-01-2014 в 15:36:

http://habrahabr.ru/post/133320/

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 19-01-2014 в 15:43:

fire64
Аппаратную часть прилагать к каждой копии ОИФД/Вольфрама, или предлагать покупать отдельно за $9.99 без учёта стоимости доставки?

__________________

xaerox on Vivino


Отправлено fire64 19-01-2014 в 15:54:

Цитата:
XaeroX писал:
Аппаратную часть прилагать к каждой копии ОИФД/Вольфрама, или предлагать покупать отдельно за $9.99 без учёта стоимости доставки?


1С с USB ключами же продают, там почему бы и ОИФД/Вольфрама не продавать с генератором шума

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено XaeroX 19-01-2014 в 15:56:

А что там с "/dev/urandom"? Как я понял, тоже имеет аппаратную природу? Под виндой аналог есть, какая-нибудь винапишная функция?

Добавлено 19-01-2014 в 22:56:

Цитата:
fire64 писал:
почему бы и ОИФД/Вольфрама не продавать с генератором шума

Проблема главным образом в том, что ОИФД и Вольфрам сами по себе игры бесплатные. А то бы оно конечно да.

__________________

xaerox on Vivino


Отправлено Дядя Миша 19-01-2014 в 16:42:

XaeroX бери из system32 любой файл и читай первые четыре символа, затем читай еще один файл, и вычитай один инт из другого.
Получившееся число врапом используй для открытия третьего файла в папке system32, читай оттуда raw дату, сложив два предидущих инта (тоже с врапом, чтоб не вылезти за размер файла) - будет тебе полурандом
Номера первого и второго файла можно например вычислить из текущей даты и текущего времени. (это для первого раза). А потом прибавлять к ним те самые смещения, которые случайно прочлись из того или иного файла.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 19-01-2014 в 17:14:

Дядя Миша
Это вариант линейного конгруэнтного генератора, только в тыщу раз медленнее за счёт доступа к файлам.

__________________

xaerox on Vivino


Отправлено thambs 19-01-2014 в 17:17:

XaeroX

/dev/urandom не такой хаотичный как /dev/random, но последний медленнее.

__________________
http://www.moddb.com/mods/monorail-quest


Временная зона GMT. Текущее время 04:50. Страницы (4): [1] 2 3 4 »
Показать все 48 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024