Задать вопрос
@Pavel_Timofeev

Генерация случайной уникальной последовательности чисел?

Добрый день,
Подскажите пожалуйста алгоритм для генерации случайных уникальных последовательсности 14 значных чисел, вида
84569389558070
65644309975202
73482199181645
37108151186406
17319599862033

Необходимо получить числа которые не повторяются и генерируется "на лету". Малое кол-во коллизей допускается и будет решаться на уровне хренения в таблице. Критично имеенно быстродействие генерации, уникальность и не повторяемость.

Чисел должно быть ооочень много поэтому вариант с предварительной генерацией не подходит по двум причинам:
1) большой объем хранимых данных;
2) вытаскивание случайных последоватеностей, без возможности "предугадать" следующее число

Спасибо большое.
  • Вопрос задан
  • 243 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 1
@Pavel_Timofeev Автор вопроса
Спасибо всем, нашел вот такую библиотеку
https://github.com/NebulousLabs/fastrand
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Melkij
@Melkij
PostgreSQL DBA
А что, в go нет вызова для CSPRNG?

https://golang.org/pkg/crypto/rand/#Int
1e13 + случайное число от 0 до 1e14
Ответ написан
Комментировать
LaRN
@LaRN
Senior Developer
Можно попробовать генерировать GUID и брать нужное количество цифр с конца.
Если верить GIT, то последние 6 знаков в хэше коммита почти никогда не повторяются.

В Win есть АПИ, например это:
https://msdn.microsoft.com/ru-ru/library/windows/d...

Многие БД, если их планируете использовать из коробки умеют генерировтать GUID.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы