Iron
Листовой
offline
Опыт:
23,587Активность: |
Random (генерация)
Вопрос, значит, такой. Как устроен сам алгоритм рандома? Ведь любая математическая формула ведет к некой последовательности заранее известной за счет получения ее по этой формуле. Может это создано в процессоре? Но я всегда считал, что в кристале процессора все упорядоченно и случайность в нем воссоздать нельзя.
PS: Тока PLZ не надо флудить постами типа: "Я так думаю, что это такая загогулина, что значит она, какбы, точно не знаю. Воть." |
01.04.2006, 00:28 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Медведь
ФффыррфррфффФФфф!
offline
Опыт:
21,702Активность: |
Самый простой способ получения рандома - set RandomVariable = количество секунд прошедших с 3 марта 1876 года. /или что ещё на эту тему. |
01.04.2006, 00:33 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Iron
Листовой
offline
Опыт:
23,587Активность: |
RandomVariable = количество секунд прошедших с 3 марта 1876 года
Енто тоже формула, т.к. в определенноевремя запроса, каждый раз она будет возвращать одинаковое значение, причем которое можно заранее узнать. Так что же, НАСТОЯЩЕГО, в полном смыслеэтого слова, рандома не существует ? Iron добавил: Я вот ща думал, и понял, что рандома, как такавого, в мире не существует нигде. Даже шар стоящий на игле свалится не в рандомную сторону, а в сторону предопределенную силами действующими на этот шар. Отсюда вывод. Возможно рандом это лишь иллюзия, как и выбор, который всегда предопределен. Просто формула выбора настолько сложна, в ней столько переменных, что учесть их все невозможно. Это замкнутый круг, если ты находишь 1-н фактор, то появляется еще 1-н, но менее весомый, наядя и его, находится еще фактор менее весомый чем этот, и так до бесконечности. Iron добавил: Тогда такой вопрос. Можно ли, незная самой формулы (в виду ее сверхсложности), заставить компьютер выводить ее значения? Т.е. значения формулы с бесконнечным числом никак не связанных переменных. ИМХО нельзя. PS: Кстати, в этом отношении аналоговые компьютеры гораздо совершеннее. |
01.04.2006, 00:50 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Арастиор
Пакон враг безграмотности
offline
Опыт:
52,846Активность: |
рандом = генерация случайных чисел. кидается кубик с х граней. Только виртуальный ;) |
01.04.2006, 01:06 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Markiz
offline
Опыт:
11,392Активность: |
Iron
компьютерный рандом так и называется - псевдорандом =) а генерируется он либо: а) В большинстве систем - через формулу в зависимости от времени (но там время ОЧЕНЬ точное) б) В продвинутых процах, предназначенных для математической (я думаю, даже скорее криптографической) деятельности - через электрические шумы (они и на самом деле считай рандомные). |
01.04.2006, 17:18 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Я слышал что знаки в Пи распределены нормально, т.е. равновероятны, по сути можно использовать число Пи начиная с какого то знака после запятой... НТ говорил что то про какой то метод... не помню название... |
01.04.2006, 17:27 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Iron
Листовой
offline
Опыт:
23,587Активность: |
Цитата:
В реальном мире кубик бросить можно, т.к. законы физики и выступают в качестве этого бесконечного числа переменных, а как бросить кубик виртуально? Это я к тому, что там явно не принцип кубика. Цитата:
Ага, и каждый раз такой "рандом" будет выдавать одну и ту же последовательность чисел. Нееее это не рандом. Цитата:
ВО ! Вот за это респект. |
|||
01.04.2006, 18:27 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,762Активность: |
Хм, лол, господа, это часть моего обучения =)
через часик настрочу тут обьяснение по датчику БСВ и игровых рандомайзерах |
01.04.2006, 20:58 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Iron
Листовой
offline
Опыт:
23,587Активность: |
Давай-давай, ждЮ. |
01.04.2006, 21:08 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
exploder
iOS zealot
offline
Опыт:
19,394Активность: |
Цитата:
Ты на кого учишся? |
|
01.04.2006, 21:42 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Алексей
Где кошачья мята?!
offline
Опыт:
26,543Активность: |
Iron: В этом мире всё-таки СУЩЕСТВУЮТ процессы, случайные по самой своей природе. Процессы, предсказать результат которых нельзя, даже обладая полной информацией о состоянии Вселенной (и каждой частицы в ней). В основном это - квантовые процессы. Например, характер излучения непериодических пульсаров полностью случаен. Случайны времена многих квантовых переходов. И даже время распада некоторой нестабильной частицы обладает значительной случайностью (точно предсказать его невозможно).
. На современных процессорах используется следующий простой алгоритм генерации случайных чисел: Код:
где MASK - некоторая константа (зависит от требуемого диапазона случайных чисел). Здесь используется тот факт, что в процессоре существует счётчик тактов - его значение увеличивается на 1 каждый такт процессора. Поскольку современные процессоры очень высокотактные, то в младших битах этого счётчика лежит достаточно случайное число (особенно если учесть влияние многозадачности и аппаратного непостоянства). Но War этим методом не пользуется, а использует конгруэнтный алгоритм (т.е. псевдослучайная последовательность, генерируемая спец. формулой). |
01.04.2006, 22:13 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,762Активность: |
Цитата:
Цитата:
Цитата:
Настоящего математического рандома не существует и существовать не может, есть только псевдорандом. Когда-то я слышал что в лабораториях для этих целей используют электроны - для них в некоторых условиях сложно предсказать поведение, ну да я в этом не спец, если интересуют программные датчики - то есть математический рандом, который стоит в компе, то могу рассказать Для моделирования Базовой Случайной Величины (БСВ, простейшая, равномерная на отрезке нормально распределенная величина) используюся программы(методы) называемые программными датчиками БСВ(обычный генератором случайных чисел принадлежит к этим датчикам). В основе всех программных датчиков лежат рекуррентные соотношения типа 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 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Iron
Листовой
offline
Опыт:
23,587Активность: |
Осталось это переварить, а так thnx. |
02.04.2006, 14:41 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|