Как быстро недели проходят...
Какое-то нормирование. Но очень странное.
Это описание генерации случайного числа "собственными руками". Если в языке программирования реализована функция Random, то компьютер просто сгенерирует Тебе любое случайное число от 0 до 1.
Но если нет, а Тебе нужно создать ситуацию, когда Ты должен получить случайное число или целую серию непредсказуемых результатов, то в качестве рандома можно использовать фокус с 3 картами. Но для простого выбора "да/нет" вполне хватит игрального кубика.
programming-lang.com/ru/comp_programming/arsak/0/j20.html
Очень интересная книжица об играх и головоломках.
Почитай с. 10.
Думаю, что карты используются потому, что имеют наибольшую разрядность (13) из всех подручных доступных игр, поэтому позволяют получить наиболее "плотное" распределение случайного числа с шагом менее 0,005. Ближайший "конкурент" - это игральная кость с шестеричной системой счисления, и попытки получить псевдо-случайное число путем бросания кубика 3 и более раз все-таки будут иметь бОльший шаг в распределении, то есть, "ячейки сетки" будут более крупными.
Карты - потому что нужно получить случайное число подручными методами. То есть, человек не может просто придумать случайное число, т.к. тогда оно будет не случайным. Но человек может придумать условия, при которых можно получить
псевдо-случайное число. Для этого сначала случайно вытаскиваются 3 карты и даже после этого Ты не можешь определить каким именно будет случайное число после проведения расчетов.
Для чего это нужно? Для теории игр, в которой в качестве исходных данных используются случайные числа и непредсказуемые результаты.
Например, Ты играешь в лотерею "5 из 36" и обычно заполняешь даты рождения родственников и знакомых.
Но в этот раз решил заполнить 5 чисел случайными числами. А как это сделать? Все просто. Взял колоду, потасовал, 5 раз вытащил по 3 карты, в экселе заранее вбил формулы, 5 раз ввел данные, каждый раз умножил результат на 36, округлил и получил числа, на которые будешь ставить.
Также это можно использовать, если в одиночку играешь в игру, где требуется соперник. И "создаешь" ИИ, чьи ходы будут определяться случайным образом.
Что касается вопроса "Почему именно такая формула", то это потому, что позволяет добиться степени точности шага до 1/2597 = 0,000385, то есть, менее 4 десятитычных. Чтобы пояснить - лучше перейти на десятичную систему счисления.
Считай, что Ты взял 10 карт "стоимостью" от 1 до 10.
Берем 1 случайную карту и формулу (x - 1)/10. Получаем десять возможных результатов - 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
Выбираем 2 карты (допустим, 3 и 5) и действуем по формуле
((x-1)/10 + (y-1))/10) = 0,02 + 0,4 = 0,42
Выбираем 3 карты (допустим, 3, 5, 7) и действуем уже по полной формуле:
(x-1)/1000 + (y-1)/100 + (z-1)/10 = 0.003 + 0.05 + 0.7 = 0.753
Таким образом, мы случайно можем получить любое число от 0 до 0,999, а (x-1), (y-1) и (z-1) - это разряды тысячных, сотых и десятых долей.
Аналогичная ситуация и в приведенном примере, только используется не десятичная, а тринадцатичная система счисления. x, y и z, уменьшенные на единицу - это РАЗРЯДЫ тысячных, сотых и десятичных долей.
Если бросать 4 или 5 раз, то степень точности (точнее, шага) в десятичном примере увеличивается до 1/ 10 000 = 0.0001 и 0.00001 соответственно. И Ты можешь уже определить случайное число в виде 0,57632.
Ошибся в расчетах примера, не уменьшил на 1.
Выбираем 3 карты (допустим, 3, 5, 7) и действуем уже по полной формуле:
(x-1)/1000 + (y-1)/100 + (z-1)/10 = 0.002 + 0.04 + 0.6 = 0.642