SecureRandom Руби и размер н - PullRequest
       38

SecureRandom Руби и размер н

0 голосов
/ 23 февраля 2012

Я ищу 6 случайных шестнадцатеричных символов и использую Ruby's SecureRandom

SecureRandom.hex(3) вернет 6 шестнадцатеричных символов, распакованных из 3 байтов случайных данных.

Вопрос в том, будет ли SecureRandom.hex(6)[0,6] возвращать 6 шестнадцатеричных символов, которые являются более случайными, поскольку до распаковки было 6 байтов случайных данных?В этом отношении SecureRandom.hex(16)[0,6] будет еще более случайным?

Для моего приложения мне нужны только 6 символов с более чем 16 миллионами уникальных значений, но я хочу шансы на столкновение с числом, которое уже было выбранобыть как можно ниже.Таким образом, использование большего n для случайных байтов улучшит распределение случайных значений в пространстве или это не нужно?

1 Ответ

4 голосов
/ 23 февраля 2012

Нет.Выбор подстроки из шести символов большей случайной шестнадцатеричной строки будет не более «случайным», чем использование подстроки, сгенерированной как строка из шести символов.

Единственный способ уменьшить вероятность коллизий - это иметь больше уникальныхвозможные значения.

...