Алгоритм генерации случайного числа размера X - PullRequest
9 голосов
/ 24 августа 2011

В моем мобильном приложении я должен предоставить пользователю случайный уникальный X буквенно-цифровой код, чтобы пользователь мог ответить этим буквенно-цифровым кодом для выполнения некоторой задачи.

Количество пользователей, которые собираются использовать это приложение, составляет около 1 миллиона человек, а трафик сообщений составляет около 0,1 миллиона сообщений в день.

Я могу использовать только 26 верхних букв, 26 строчных букв и 10 цифр. Если размер случайного числа равен 5, то я могу сгенерировать 916132832 уникальных комбинаций. После того, как комбинации исчерпаны, я хочу снова использовать это поколение.

Я ищу алгоритмический подход. Есть ли алгоритмический подход для решения этой проблемы?

Ответы [ 11 ]

0 голосов
/ 24 августа 2011

Прежде всего, почему бы вам не использовать UUID ?

Но если вы хотите сами генерировать числа, попробуйте что-то вроде этого:

Создайте 10-20 миллионов комбинаций и сохраните их в памяти.Когда вы хотите следующий идентификатор, получите случайную комбинацию из них и удалите ее из набора.

Когда набор станет пустым, сбросьте набор с исходными комбинациями (вы можете сохранить вторую копию исходного наборадля быстрого сброса).

...