Нужно создать ключ(набор символов) и что бы свести к самому минимуму их схожость 100%. Если будет строка длиной 16 символов, каждый символ может быть одним из 40 символов таблицы. Обычный random java класс сможет ли создать тысячи чисел, чтобы 16 групп чисел не совпали на 16 чисел следующей группы?
P. S. Мне это не даёт покоя, уже несколько месяцев.
Полностью различные ключи снижают безопасность, если ты желаешь, чтобы ни одно число не совпадало в ряду предыдущих и соедующих 16 чисел в одном разряде.
Обычный рандом java не гарантирует случайные числа, но вероятность того, что 16 чисел совпадаёт со следующими 16 числами при нормальном рандоме рассчитывается так:
Общее количество всех вариантов перебора 16 чисел от 0 до 39: 16^40
Вероятность совпадения двух следующих друг за другом наборов: 1/(16^40) //это не ошибка, но сильно контр-интуитивно, вероятность и правда равна выпадению определённого набора
Вероятность совпадения трёх следующих друг за другом чисел: 1/(16^80)
А теперь если использовать класс Random, при этом в системе этот рандом в это время не используется в другом месте, и при условии высокой скорости, то вероятнось совпадения двух последующих друг за другом наборов по 16 чисел:
->0 //стремится к нулю, поскольку java Random не совсем случаен, а псевдослучаен
Общее количество всех вариантов перебора 16 чисел от 0 до 39: 16^40Нет. Количество вариантов считается как: размер алфавита ^ количество символов в сообщении. То есть, всё наоборот: 40 ^ 16.
Вероятность совпадения двух следующих друг за другом наборов: 1/(16^40) //это не ошибкаНет. Это ошибка. Вероятности зависимых событий перемножаются.
Со всеми правками согласен, кроме последней. Последняя не ошибка, и вероятность и правда равна 1/(40^16) я не ошибаюсь, ошибаешься здесь ты, ибо это контр-интуитивно, там не должно бытт перемножения.
Вероятность совпадения двух следующих друг за другом наборов: 1/(16^40) //это не ошибкаНет. Это ошибка. Вероятности зависимых событий перемножаются.