0 голосов
 
488 просмотров
7.12.2018 / 07:43  Death

Создание случайного уникального ключа

Нужно создать ключ(набор символов) и что бы свести к самому минимуму их схожость 100%.
Если будет строка длиной 16 символов, каждый символ может быть одним из 40 символов таблицы.
Обычный random java класс сможет ли создать тысячи чисел, чтобы 16 групп чисел не совпали на 16 чисел следующей группы?

P. S. Мне это не даёт покоя, уже несколько месяцев.
Изм. aNNiMON от 7.12.2018 / 10:58
Ответы
 
3 голоса
 
# 7.12.2018 / 10:05  aNNiMON
java.util.UUID
  1. UUID uuid = UUID.randomUUID();
  2. // 129d3577-c39b-6b93-a986-552068218155
Изм. aNNiMON от 7.12.2018 / 10:05
 
-1 голос
 
# 7.12.2018 / 08:34  Askalite
Полностью различные ключи снижают безопасность, если ты желаешь, чтобы ни одно число не совпадало в ряду предыдущих и соедующих 16 чисел в одном разряде.

Обычный рандом java не гарантирует случайные числа, но вероятность того, что 16 чисел совпадаёт со следующими 16 числами при нормальном рандоме рассчитывается так:

Общее количество всех вариантов перебора 16 чисел от 0 до 39:
16^40

Вероятность выпадения определённого набора:
1/(16^40)

Вероятность совпадения двух следующих друг за другом наборов:
1/(16^40) //это не ошибка, но сильно контр-интуитивно, вероятность и правда равна выпадению определённого набора

Вероятность совпадения трёх следующих друг за другом чисел:
1/(16^80)

А теперь если использовать класс Random, при этом в системе этот рандом в это время не используется в другом месте, и при условии высокой скорости, то вероятнось совпадения двух последующих друг за другом наборов по 16 чисел:

->0 //стремится к нулю, поскольку java Random не совсем случаен, а псевдослучаен
7.12.2018 / 10:22  Arigato
Общее количество всех вариантов перебора 16 чисел от 0 до 39: 16^40Нет. Количество вариантов считается как: размер алфавита ^ количество символов в сообщении. То есть, всё наоборот: 40 ^ 16.

Вероятность совпадения двух следующих друг за другом наборов: 1/(16^40) //это не ошибкаНет. Это ошибка. Вероятности зависимых событий перемножаются.
7.12.2018 / 12:18  Askalite
Со всеми правками согласен, кроме последней. Последняя не ошибка, и вероятность и правда равна 1/(40^16) я не ошибаюсь, ошибаешься здесь ты, ибо это контр-интуитивно, там не должно бытт перемножения.
Всего: 2

Реклама

Мы в соцсетях

tw tg yt gt