XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Iron
Листовой
offline
Опыт: 24,427
Активность:
Random (генерация)
Вопрос, значит, такой. Как устроен сам алгоритм рандома? Ведь любая математическая формула ведет к некой последовательности заранее известной за счет получения ее по этой формуле. Может это создано в процессоре? Но я всегда считал, что в кристале процессора все упорядоченно и случайность в нем воссоздать нельзя.
PS: Тока PLZ не надо флудить постами типа: "Я так думаю, что это такая загогулина, что значит она, какбы, точно не знаю. Воть."
Старый 01.04.2006, 00:28
Медведь
ФффыррфррфффФФфф!
offline
Опыт: 21,702
Активность:
Самый простой способ получения рандома -
set RandomVariable = количество секунд прошедших с 3 марта 1876 года. /или что ещё на эту тему.
Старый 01.04.2006, 00:33
Iron
Листовой
offline
Опыт: 24,427
Активность:
RandomVariable = количество секунд прошедших с 3 марта 1876 года
Енто тоже формула, т.к. в определенноевремя запроса, каждый раз она будет возвращать одинаковое значение, причем которое можно заранее узнать.

Так что же, НАСТОЯЩЕГО, в полном смыслеэтого слова, рандома не существует ?

Iron добавил:
Я вот ща думал, и понял, что рандома, как такавого, в мире не существует нигде. Даже шар стоящий на игле свалится не в рандомную сторону, а в сторону предопределенную силами действующими на этот шар. Отсюда вывод. Возможно рандом это лишь иллюзия, как и выбор, который всегда предопределен. Просто формула выбора настолько сложна, в ней столько переменных, что учесть их все невозможно. Это замкнутый круг, если ты находишь 1-н фактор, то появляется еще 1-н, но менее весомый, наядя и его, находится еще фактор менее весомый чем этот, и так до бесконечности.

Iron добавил:
Тогда такой вопрос. Можно ли, незная самой формулы (в виду ее сверхсложности), заставить компьютер выводить ее значения? Т.е. значения формулы с бесконнечным числом никак не связанных переменных.

ИМХО нельзя.

PS: Кстати, в этом отношении аналоговые компьютеры гораздо совершеннее.
Старый 01.04.2006, 00:50
Арастиор
Пакон враг безграмотности
offline
Опыт: 52,386
Активность:
рандом = генерация случайных чисел.
кидается кубик с х граней. Только виртуальный ;)
Старый 01.04.2006, 01:06
Markiz

offline
Опыт: 11,432
Активность:
Iron
компьютерный рандом так и называется - псевдорандом =)
а генерируется он либо:
а) В большинстве систем - через формулу в зависимости от времени (но там время ОЧЕНЬ точное)
б) В продвинутых процах, предназначенных для математической (я думаю, даже скорее криптографической) деятельности - через электрические шумы (они и на самом деле считай рандомные).
Старый 01.04.2006, 17:18
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Я слышал что знаки в Пи распределены нормально, т.е. равновероятны, по сути можно использовать число Пи начиная с какого то знака после запятой...
НТ говорил что то про какой то метод... не помню название...
Старый 01.04.2006, 17:27
Iron
Листовой
offline
Опыт: 24,427
Активность:
Цитата:
кидается кубик с х граней. Только виртуальный

В реальном мире кубик бросить можно, т.к. законы физики и выступают в качестве этого бесконечного числа переменных, а как бросить кубик виртуально?
Это я к тому, что там явно не принцип кубика.
Цитата:
по сути можно использовать число Пи начиная с какого то знака после запятой...

Ага, и каждый раз такой "рандом" будет выдавать одну и ту же последовательность чисел. Нееее это не рандом.
Цитата:
В продвинутых процах, предназначенных для математической (я думаю, даже скорее криптографической) деятельности - через электрические шумы (они и на самом деле считай рандомные).

ВО ! Вот за это респект.
Старый 01.04.2006, 18:27
NETRAT

offline
Опыт: 83,712
Активность:
Хм, лол, господа, это часть моего обучения =)
через часик настрочу тут обьяснение по датчику БСВ и игровых рандомайзерах
Старый 01.04.2006, 20:58
Iron
Листовой
offline
Опыт: 24,427
Активность:
Давай-давай, ждЮ.
Старый 01.04.2006, 21:08
exploder
iOS zealot
offline
Опыт: 19,394
Активность:
Цитата:
Хм, лол, господа, это часть моего обучения =)

Ты на кого учишся?
Старый 01.04.2006, 21:42
Алексей
Где кошачья мята?!
offline
Опыт: 26,303
Активность:
Iron: В этом мире всё-таки СУЩЕСТВУЮТ процессы, случайные по самой своей природе. Процессы, предсказать результат которых нельзя, даже обладая полной информацией о состоянии Вселенной (и каждой частицы в ней). В основном это - квантовые процессы. Например, характер излучения непериодических пульсаров полностью случаен. Случайны времена многих квантовых переходов. И даже время распада некоторой нестабильной частицы обладает значительной случайностью (точно предсказать его невозможно).
.
На современных процессорах используется следующий простой алгоритм генерации случайных чисел:
Код:
rdtsc
and eax,MASK

где MASK - некоторая константа (зависит от требуемого диапазона случайных чисел). Здесь используется тот факт, что в процессоре существует счётчик тактов - его значение увеличивается на 1 каждый такт процессора. Поскольку современные процессоры очень высокотактные, то в младших битах этого счётчика лежит достаточно случайное число (особенно если учесть влияние многозадачности и аппаратного непостоянства).
Но War этим методом не пользуется, а использует конгруэнтный алгоритм (т.е. псевдослучайная последовательность, генерируемая спец. формулой).
Старый 01.04.2006, 22:13
NETRAT

offline
Опыт: 83,712
Активность:
Цитата:
а) В большинстве систем - через формулу в зависимости от времени (но там время ОЧЕНЬ точное)
Это в корне неверно. Время используется лишь для зерна(seed) датчика.
Цитата:
б) В продвинутых процах, предназначенных для математической (я думаю, даже скорее криптографической) деятельности - через электрические шумы (они и на самом деле считай рандомные).
Это верно, однако любой шум имеет свой период, это может быть использовано только в исследовательских лабораториях, ибо выделять из шума его случайную составляющую(белый шум) да еще и с определенной точностью - непосильная задача
Цитата:
Я слышал что знаки в Пи распределены нормально, т.е. равновероятны, по сути можно использовать число Пи начиная с какого то знака после запятой...
Верно, но вычислять эти цифры с определенным порядком точности - это мегагеморр, и потом, это все равно не дает случайную последовательность

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

Для моделирования Базовой Случайной Величины (БСВ, простейшая, равномерная на отрезке нормально распределенная величина) используюся программы(методы) называемые программными датчиками БСВ(обычный генератором случайных чисел принадлежит к этим датчикам). В основе всех программных датчиков лежат рекуррентные соотношения типа
F(i)=G(F(i-1),F(i-2)...F(k))
То есть обычная рекуррентная последовательность, где каждое следующее значение зависит от нескольких предыдущих. Это детерминированный алгоритм и на его основании мы получаем псевдослучайную последовательность. У всех датчиков есть такая характеристика как период - начиная с некоторого места значения начинают повторяться - образуя цикл. Период - это основной показатель качества датчика.

Самый простой и наиболее эффективный датчик - это датчик, основанный на мультипликативном конгруэнтном методе. Мультипликативный - это значит что испольуется умножение, а конгруэнтный - используется деление нацело(деление по модулю, a mod b, ModuloInteger и т.п., то есть стандартное для ЭВМ деление). Суть датчика в том что стартовым значением(зерно, seed) задается какое-то число X (в компе это количество миллисекунд либо после включения компа, либо от заветной даты - Date(0)), и к этому значению применяется преобразование (B*X) mod A, в результате которого мы получаем число, которое носит псевдослучайный характер. Далее это число становится новым зерном(seed) и к нему применяется то же преобразование. В результате мы имеем псевдослучайную последовательность. Разумеется, вся проблема заключается в специальном выборе констант A и B и стартового значения. В качестве стартового значения следует брать нечетное число. Число A - это, по сути максимум, типовое значение 2^31 = 2147483648. В качестве числа B следует брать красивые простые числа, например 65539. Период датчика напрямую зависит от констант A и B.

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

Большинство генераторов случайных чисел - MM-датчики. Разумеется, кроме этих двух есть еще туева хуча методов, но все они предназначены для генерации неравномерно распределенной случайной величины - то есть биномиальные распределения, геометрические распределения, Пуассона и т.п., которые используются для более узкоспециализированных задач

Когда-то тестировал датчик игры Варкрафт, дошел до 50000000, не нашлось ни одной повторяющейся последовательности длинной более 1. Дальше тестировать не имело смысла - то есть период явно не меньше этого числа. То есть игровой датчик основан на методе ММ.

У меня даже сишные классы где-то на компе валяются, и есть асмовский МК датчик...

Мат.статистика, мать ее!

NETRAT добавил:
Кафедра называется Информационное и Программное Обеспечение Автоматизированных Производств, но статистики у нас хватает...

Отредактировано NETRAT, 01.04.2006 в 22:39.
Старый 01.04.2006, 22:23
Iron
Листовой
offline
Опыт: 24,427
Активность:
Осталось это переварить, а так thnx.
Старый 02.04.2006, 14:41
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 03:17.