Как я могу автоматически генерировать уникальные поддельные имена для пользователей? - PullRequest
6 голосов
/ 20 августа 2009

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

Простой способ заключается в простом использовании столбца SERIAL, но целые числа не запоминаются. Мы хотели бы использовать имена реальных людей, чтобы помнить псевдонимы.

Другой простой способ - найти список имен где-нибудь, нумеровать их и использовать SERIAL для извлечения имен из списка. Когда список закончится, добавьте еще имена.

Но есть ли какой-нибудь умный способ сопоставить целые числа с именами?

В настоящее время у нас около 2000 пользователей, и мы растем, но я сомневаюсь, что мы когда-нибудь станем Google.

Ответы [ 4 ]

7 голосов
/ 17 июня 2010

Это может звучать безумно. Но есть алгоритм , используемый в игровом программировании для создания бессмысленных, но фонетически уникальных имен, таких как альвеолярные, билабиальные, глоттальные, нёбные, веларские

5 голосов
/ 20 августа 2009

Выберите случайное имя из файла имен Бюро переписей .

1 голос
/ 20 августа 2009

Вы пробовали хэш-функции ? Я не уверен, доступны ли они в Postgres. Но да, один из способов - позволить внутренней хэш-функции позаботиться. Они будут выводить уникальные идентификаторы.

0 голосов
/ 20 августа 2009

В «день» Compuserve (или это был AOL?) Раньше выдавал временные исходные пароли, имея два списка слов, беря одно слово из каждого списка и складывая его вместе, так что вы получите что-то вроде EasyTomato. или что угодно. Возможно, что-то подобное будет работать для вашей пользовательской базы. Если в каждом списке слов содержится 256 символов, это 65535 уникальных комбинаций (и обратите внимание, как легко вы можете выбрать комбинацию, просто увеличив 16-разрядное целое число).

РЕДАКТИРОВАТЬ: Ну, в конце концов, не делайте прямого приращения целого числа, иначе первые 256 человек получат одно и то же первое слово, но основная идея все еще верна. Выберите случайное, еще не использованное 16-битное число. Старшие 8 бит - это ваш индекс во втором списке слов, младшие 8 бит - ваш индекс во втором списке слов.

...