Ринат Рахмаев
Ринат Рахмаев | Репутация: 0 (Без голоса) 12 мая 2014 в 20:32
не могу понять суть сложения по модулю (mod), в качестве примера приведу отрывок лекции:

не могу понять суть сложения по модулю (mod), в качестве примера приведу отрывок лекции:

Генераторы псевдослучайных чисел могут работать по разным алгоритмам. Одним из простейших генераторов является так называемый линейный конгруэнтный генератор, который для вычисления очередного числа ki использует формулу

ki=(a*ki-1+b)mod c,

где а, b, с — некоторые константы, a ki-1 — предыдущее псевдослучайное число. Для получения k1 задается начальноезначение k0. Возьмем в качестве примера a=5,b=3,c=11 и пусть k0= 1. В этом случае мы сможем по приведенной выше формуле получать значения от 0 до 10 (так как с = 11). Вычислим несколько элементов последовательности:

k1 = (5 * 1 + 3) mod 11 = 8;

k2 = (5 * 8 + 3) mod 11 = 10;

k3 = (5 * 10 + 3) mod 11 = 9;

k4 = (5 * 9 + 3) mod 11 = 4;

k5 = (5 * 4 + 3) mod 11 = 1.

Полученные значения (8, 10, 9, 4, 1) выглядят похожими на случайные числа. Однако следующее значение k6 будет снова равно 8:

прошу разьяснить порядок действий при вычислении данного примера (как получили данные ответы 8, 10, 9, 4, 1)

Евгений Колегов
Евгений Колегов | Репутация: 140 (Кандидат) 12 мая 2014 в 23:36

Здравствуйте!
Я так понял это Pascal, mod это остаток от деления на число.

Ren Technik
Ren Technik | Репутация: 103 (Кандидат) 13 мая 2014 в 12:54

Получилось, вероятно, так: для k2 - 5*8+3=43; из 43-(11*3)=10; с остальными примерами все также. А для К1 сумма в скобках = 8, меньше 11. Поэтому результата остатка 8. Порядка подсчета не знаю, но вероятно это так. Ren