^

Ужас Амитивиля / Загадочный Random

# 6 ноября 2013, 15:57

Щепыч

Один из клана Square Patrol 50 уровень
1426 сообщений
4005 SFP

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

Ведь, например, если компьютеру нужно выбрать любое целое число из {0;∞}, то он выберет самое первое в списке. Нет для него причины выбирать 2, 3 и т. д. Так как цифра 1 удовлетворяет запрос.

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

Так как же на самом деле выбирается случайное число?

# 6 ноября 2013, 17:24

Vitali Acote

Тиамат клана Dark Moon Dragons 26 уровень
186 сообщений
1651 SFP

В FF8 существуют две таблицы (одна для боя, вторая — для остальных событий) по которым и идёт отсчёт рандомного числа. Таким образом, если мы сбиваем игру, то таблички улетают к своему началу. Если знаешь таблички, то можно спрогнозировать часть рандомных чисел. Это очень сложно, но можно.

Боевая рандомная таблица в FF8 начинается так: 1) 153; 2) 6; 3) 240; 4) 53…. и заканчивается: 254) 199, 255) 106; 256) 202.

# 6 ноября 2013, 17:36

Щепыч

Один из клана Square Patrol 50 уровень
1426 сообщений
4005 SFP

Про это я уже читал в статье о поиске Анжело. От туда  и вспомнился этот вопрос. 

Ну а вот в языках программирования функция Random тоже использует таблицы или же там более совершенный способ выбора числа?

# 6 ноября 2013, 17:55

Vitali Acote

Тиамат клана Dark Moon Dragons 26 уровень
186 сообщений
1651 SFP

@Щепыч писал:

Ну а вот в языках программирования функция Random тоже использует таблицы или же там более совершенный способ выбора числа?

Думаю, что в каждом конкретном случае может быть свой вариант выбора рандомного числа.

# 6 ноября 2013, 17:59

dameon

Devil Summoner 75 уровень
8595 сообщений
19930 SFP

Даже не знаю, сразу одним постом написать обо всем, или лулзы сначала половить с обсуждения.

Случайных чисел в компе в принципе не существует, они псевдослучайные. То есть, как примерно выразился Щепыч о таблицах, определив нужное место в последовательности, мы сможем вычислить все остальные числа, которые сгенерит комп.

Больше — по настроению.

# 6 ноября 2013, 19:34

Vitali Acote

Тиамат клана Dark Moon Dragons 26 уровень
186 сообщений
1651 SFP

@dameon писал:

То есть, как примерно выразился Щепыч о таблицах, определив нужное место в последовательности, мы сможем вычислить все остальные числа, которые сгенерит комп.

То есть, условной «рулетки» ни в одной из игр быть не может?

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

# 6 ноября 2013, 19:40

Щепыч

Один из клана Square Patrol 50 уровень
1426 сообщений
4005 SFP

Судя по высказыванию Дамеона его вообще не существует, ни в играх ни в программировании, да и вообще нигде…

# 6 ноября 2013, 20:21

dameon

Devil Summoner 75 уровень
8595 сообщений
19930 SFP

Итак, пока не прибежал Хронос со своим коронным «я загадаю число, и ты не сможешь отгадать». Кстати, все равно смогу с некоторой ненулевой вероятностью, но и об этом позже.

Комп (консоль, часы, айфон и др) не умеет думать и никаким способом не сможет смоделировать последовательность случайных чисел. Если нам вдруг приспичит получить ЧИСЛО, комп не может его взять и придумать, так как мозгов у него нет.

Поэтому везде (не только в игровой индустрии) используются последовательности ПСЕВДО случайных чисел.

Как нас учат в вузе, у любой последовательности есть

а) первый член

б) формула, по которой можно получить любой другой

Например, 1, 2,3, 4… — имеет

первый член = 1

и формулу N члена = (N-1 член) + 1 или просто N

Ну в общем понятно.

Когда дело доходит до компа, то самих формул существует очень много. Например возьмем числа А, прибавим к нему Б и поделим на С. Остаток от целочисленного деления и будет нашим типа случайным числом.

Например, B у нас будет 3, а C = 5

А первым числом будет 1

И вот у нас типа последовательность: 1, 4, 2, 0, 3, 1, 4, 2, 0, 3, 1…

Нетрудно видеть, что здесь полный П — члены начинают повторяться уже с 6-ого. Поэтому в действительности берутся на 2 и 3, а 100500 и 9000.

Осталось выяснить, откуда комп возьмет первое число для последовательности. Чаще всего берется системное время, как точка отсчета. Таким образом последовательность всегда одна и та же, но благодаря разным точкам начала мы и будем иметь типа разные последовательности (например, человеку покажутся разными 1,2,3,1,2,3 и 2,3,1,2,3,1).

На этом и основана криптография — грубо говоря, вычислив пресловутые А, Б, и С мы уже взломали что-нибудь.

==

Немного про загадывание в уме. Это тоже не полностью случайные числа. Если попросить человека загадать 100 чисел от 1 до 10, то какие-то у него будут преобладать, также будет виден некий паттерн, как он загадывает. Проанализировав его мы сможем предсказывать следующее число, которое он загадает с некоторой вероятностью. если кому интересно, то человека предсказать куда проще, чем комп, так как последний может держать в памяти последовательности из 100500 чисел, а человек — нет.

@Щепыч писал:

не исключена возможность повторения одних и тех же групп чисел

Всегда повторятся когда-нибудь. Благодаря современным объемам памяти и разрядности, это случится очень не скоро, но геймеру в общем хватило бы куда меньшего. В криптографии же самое веселье, не в играх.

@Vitali Acote писал:

Таким образом, если мы сбиваем игру, то таблички улетают к своему началу. Если знаешь таблички, то можно спрогнозировать часть рандомных чисел. Это очень сложно, но можно

Именно. 99.9% просто не будут этим заниматься, а те, кто все же расшифруют, смогут написать статью, но едва ли найдут этому применение в игре.

@Щепыч писал:

Ну а вот в языках программирования функция Random тоже использует таблицы или же там более совершенный способ выбора числа?

генерация одной и той же последовательности

выбор точки отсчета — системного времени

в Паскале это вроде бы Random(), а Сях — rand()

Соответственно выбор начала в первом — randomise(), во втором — srand()

@Vitali Acote писал:

Но если реального Рандома в игровой индустрии нет, то как-то становится грустно…

А нафиг реальный рандом в игровой индустрии? Если мы будем переигрывать FFVIII хоть 500 раз, на нас всегда будут нападать в разных местах.

А вот своему банку я желаю исключительно 128 битных AES ключей шифрования.

+18
# 6 ноября 2013, 20:29

AGITatOr

Гражданский 39 уровень
7750 сообщений
3100 SFP

дамеон, я забыл пароль к одному rar-архиву. за сколько сможешь его взломать? щас скор комп привезут — я тебе скину по почте. ты ж вроде разбираешься в шифровании, как я понял. я смутно помню, там 12 или 10 цифр в пароле.

# 6 ноября 2013, 20:42

dameon

Devil Summoner 75 уровень
8595 сообщений
19930 SFP

@AGITatOr писал:

я тебе скину по почте

Сначала ты переведешь мне деньги на карточку.

@AGITatOr писал:

за сколько сможешь его взломать?

Все время вспоминается цитата из одной серии первого сезона Дальнобойщиков «у меня фотоаппарат, а не калькулятор». Какое отношение взлом твоего архива имеет к псевдослучайным числам?

@AGITatOr писал:

помню, там 12 или 10 цифр в пароле.

1000-5000 лет где-то в особенно запущенном случае.

Поясню. Запороленный архив — это только потешить свое ЧСВ и к тру криптографии мало отношения имеет. Если ты хочешь все же передать архив с секретной инфой кому-нибудь, то начинается самое интересное — а как сообщить пароль ему?

+14
# 6 ноября 2013, 21:31

Щепыч

Один из клана Square Patrol 50 уровень
1426 сообщений
4005 SFP

@AGITatOr писал:

я смутно помню, там 12 или 10 цифр в пароле.

Все очень просто. Открываешь окно ввода пароля, вводишь туда 000000000000, и нажимаешь Enter.

Если пароль не подошел, прибавляешь к числу 1 и снова его вводишь. 000000000001.

Если опять не подошло, прибавляешь еще раз 1, и снова пробуешь пароль.

Повторяй операцию вплоть до ZZZZZZZZZZZZZZ. Уверен, тогда ты найдешь верный пароль.

Всего-то придется попробовать 109 в 12 степени вариантов пароля. (Это 2812664781782894485727281 вариантов.)

# 7 ноября 2013, 03:29

MERKATOR

злодей клана Ктулху и прочие няшки :3 4 уровень
129 сообщений
4 SFP

@dameon писал:

Random(), а Сях — rand()

и то и то и там и там это 2 разных рандума)))

@AGITatOr писал:

я забыл пароль к одному rar-архиву. за сколько сможешь его взломать?

3.000$

# 7 ноября 2013, 08:34

dameon

Devil Summoner 75 уровень
8595 сообщений
19930 SFP

@MERKATOR писал:

3.000$

Чтобы устроиться у Гугль, правильно отвечать как-нибудь «10 долларов за каждый день работы».

# 4 декабря 2013, 03:08

MERKATOR

злодей клана Ктулху и прочие няшки :3 4 уровень
129 сообщений
4 SFP

@dameon писал:

@MERKATOR писал:

3.000$

Чтобы устроиться у Гугль, правильно отвечать как-нибудь «10 долларов за каждый день работы».

Я уже отказался от работы в гуггле :D бтв стоимость не от времени считается.

# 4 декабря 2013, 10:19

dameon

Devil Summoner 75 уровень
8595 сообщений
19930 SFP

@MERKATOR писал:

бтв стоимость не от времени считается.

Оплата рабочего труда — от времени и тарифной ставки.

Для комментирования необходимо авторизоваться