Какая библиотека Java предоставляет возможность генерировать уникальные случайные комбинации строк из заданного набора символов? - PullRequest
4 голосов
/ 16 ноября 2011

Какая библиотека Java предоставляет возможность генерировать уникальные случайные комбинации строк из заданного набора символов?

Скажем, у меня есть такой набор символов: [a-zA-Z0-9]

И мне нужно сгенерировать 4-символьную строку из этого набора, которая с меньшей вероятностью столкнется.

Ответы [ 3 ]

8 голосов
/ 16 ноября 2011

Apache Commons Lang имеет класс RandomStringUtils с методом, который принимает последовательность символов и число и выполняет то, что вы просите. Тем не менее, это не гарантирует предотвращения столкновений, и, имея всего 4 символа, вы будете бороться за это.

3 голосов
/ 16 ноября 2011

И мне нужно сгенерировать 4-символьную строку из этого набора, которая с меньшей вероятностью столкнется.

Менее вероятно, чем что? Всего таких строк: 62 ^ 4 = 14,8 млн. Из-за парадокса дня рождения, вы получаете около 50% вероятности столкновения, если вы случайно генерируете 3800 из них. Если это неприемлемо, никакая библиотека вам не поможет, вам нужно использовать более длинную строку или явно установить уникальность (например, путем увеличения целого числа и форматирования его в базе 62).

1 голос
/ 16 ноября 2011

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

...