Итак, пока не прибежал Хронос со своим коронным «я загадаю число, и ты не сможешь отгадать». Кстати, все равно смогу с некоторой ненулевой вероятностью, но и об этом позже.
Комп (консоль, часы, айфон и др) не умеет думать и никаким способом не сможет смоделировать последовательность случайных чисел. Если нам вдруг приспичит получить ЧИСЛО, комп не может его взять и придумать, так как мозгов у него нет.
Поэтому везде (не только в игровой индустрии) используются последовательности ПСЕВДО случайных чисел.
Как нас учат в вузе, у любой последовательности есть
а) первый член
б) формула, по которой можно получить любой другой
Например, 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 ключей шифрования.