PDA

Просмотр полной версии : Алгоритм генерации правдоподобных ников


mikser
02.04.2012, 09:51
Нужен Сабж.
Ники должны быть такими что бы с первого взгляда нельзя было определить что они были сгенерированы :)
Как для русских так и для английских ников.
Какие есть идеи?

Yegor
02.04.2012, 10:09
Уже давно использую такое. Собрал просто большую базу реальныx ников и просто в конце, в начале или в середин рандомно добавляю букву если ник уже занят.

goodvin1709
02.04.2012, 10:13
Да нужен не генератор,а большая база з разных серверов.Через пх можно сделать ее.

mikser
02.04.2012, 10:23
большая база з разных серверов.Через пх можно сделать ее.
Тоесть есть пакет на получение ников всех персов зареганых на сервере? Или ты предлагаешь бегать персом по локациям и собирать ники всех кто в онлайне?

Добавлено через 2 минуты
Уже давно использую такое. Собрал просто большую базу реальныx ников и просто в конце, в начале или в середин рандомно добавляю букву если ник уже занят.
Слишком просто мне кажется
Лучше наверно не добавлять букву а рандомно заменять рандомную букву на аналогичную. Гласную на другую гласную. А согласные на другие согласные.
У меня идея была

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


при генерации ника просто выбирать несколько рандомных слогов из базы-слогов

Затруднения испытываю во втором пункте.
Нужен хороший алгоритм слогоделения! Или готовая база-слогов составленная после анализа ников

MyGarant.net
02.04.2012, 10:59
Я с свое время брал базу с любой браузерной игры. Ники топ-игроков, потому что у них самые продуманные имена.

mikser
02.04.2012, 12:00
А есть браузерные игры с русскими никами? :)

MyGarant.net
02.04.2012, 12:37
Не знаю. У меня была база из ogame.ru (русские ники на латинице).

mikser
02.04.2012, 13:09
русские ники на латинице
А как ты их фильтровал, как отличить английский от русского на латинице?

Silent
02.04.2012, 14:13
А есть браузерные игры с русскими никами? :)Вам критично чтобы ники были русскими? Зайдите на любой крупный портал и стяните список юзеров, к примеру на гохе очень большой список который можно применить к вашей задаче.

mikser
02.04.2012, 14:38
Да эти ники в чистом виде как правило уже заняты. Их надо или изменять как Егор делает. Либо генерить свои.
Генераторов английских ников полно, а вот русских мало.

SeregaZ
02.04.2012, 15:59
так в случае занятости запускай подмену русских букв английскими.
типа Вася - первую русскую "Вэ" поменять на английскую "Би", проверить, если занято начать менять вторую:
русскую "А" на английскую "Эй" - проверить, занято? мля
русскую "Эс" на английскую "Си" - проверить, занято? да чтоб тебя
заменить две буквы, если есть совпадения по начертанию. и так далее :)

mikser
02.04.2012, 16:53
так в случае занятости запускай подмену русских букв английскими.
типа Вася - первую русскую "Вэ" поменять на английскую "Би", проверить, если занято начать менять вторую:
русскую "А" на английскую "Эй" - проверить, занято? мля
русскую "Эс" на английскую "Си" - проверить, занято? да чтоб тебя
заменить две буквы, если есть совпадения по начертанию. и так далее :)
Такие фишинговые трюки не прокатят в на серваках руоффа. Там слово должно сосотять либо целиком из русских либо целиком из английских символов. Цифрами конечно можно заменять. Но это палево, я считаю :o

Gagablik
02.04.2012, 23:05
combats.ru Браузерка, там русские ники есть. Но они в перемешку с английскими

goodvin1709
03.04.2012, 00:28
Ой берешь сервак онлайн 4000+ Гномиком за 10 минут топаешь в Гиран с пакетником и в стринг лист всех суешь....делал так 1к за 2 минуты.

Tyranter
03.04.2012, 01:49
http://nick-name.ru/generate/
или не?

Professor
03.04.2012, 01:56
Вам критично чтобы ники были русскими? Зайдите на любой крупный портал и стяните список юзеров, к примеру на гохе очень большой список который можно применить к вашей задаче.
Руки прочь от ников на гохе! :mad:

Naza
03.04.2012, 04:16
лазил в нете и нашол прогу для деления на слоги и к ней кусок кода
unit Unit1;
{Программа слогоделения}
{Использованы правила слогоделения по А.Ю.Мусорину}
{Author by MonoLife}
{2005 г.}

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
MyGlas= set of 'а'..'я';
MyZSoglas= set of 'а'..'я';
MyGSoglas= set of 'а'..'я';
MyIsklSimv= set of 'а'..'я';


type
TForm1 = class(TForm)
Edit2: TEdit;
Label3: TLabel;
Bevel2: TBevel;
Button2: TButton;
Label4: TLabel;
Panel1: TPanel;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit3: TEdit;
Button1: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
function glastrue(d: char): boolean;
function Zsoglastrue(d: char): boolean;
function Gsoglastrue(d: char): boolean;
function Isklsimvtrue(d: char): boolean;
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
Glas: MyGlas;
ZSoglas: MyZSoglas;
Gsoglas: MyGSoglas;
IsklSimv: MyIsklSimv;
Defis: char;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Glas:=['а','е','ё','и','о','у','ы','э','ю','я'];
ZSoglas:=['б','в','г','д','ж','з','л','м','н','р'];
Gsoglas:=['к','п','с','т','ф','х','ц','ч','ш','щ'];
IsklSimv:=['ь','ъ','й'];
Defis:='-';
Label2.Caption:='';
ActiveControl:=Edit1;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i, k,x,j: integer;
zs: boolean;
s1,s2, s3: string;
begin
zs:=false;
if Edit1.Text='' then
begin
Application.MessageBox('Введите слово в верхнее поле',
'Слово по слогам', MB_ICONINFORMATION);
ActiveControl:=Edit1;
exit;
end;
s1:=Edit1.Text;
s2:='';
s3:='';
k:=0;
for i:=1 to length(s1) do
begin
if s1[i]=' ' then
begin
Application.MessageBox('Слово не должно содержать пробелов'
, 'Слово по слогам',
MB_ICONINFORMATION);
Edit3.Text:='';
ActiveControl:=Edit1;
exit;
end
else
if s1[i]=Defis then
begin
s2:=s2+'5';
zs:=True;
inc(k);
end
else
if glastrue(AnsiLowerCase(s1)[i]) then
begin
s2:=s2+'1';
inc(k);
end
else
if Zsoglastrue(AnsiLowerCase(s1)[i]) then
s2:=s2+'2'
else
if Gsoglastrue(AnsiLowerCase(s1)[i]) then
s2:=s2+'3'
else
if Isklsimvtrue(AnsiLowerCase(s1)[i]) then
s2:=s2+'4'
else
begin
Application.MessageBox(pchar('Введенное слово написано неверно'+
#13+'или не делится на слоги'), 'Слово по слогам',
MB_ICONINFORMATION);
Edit3.Text:=Edit1.Text;
ActiveControl:=Edit1;
exit;
end;
end;
if k=0 then
begin
Application.MessageBox(pchar('Введенное слово написано неверно'+
#13+'или не делится на слоги'), 'Слово по слогам',
MB_ICONINFORMATION);
Edit3.Text:=Edit1.Text;
ActiveControl:=Edit1;
exit;
end;
if k=1 then
begin
Edit2.Text:=s2;
Label2.Caption:='Слогов в слове - '+IntToStr(k);
Edit3.Text:=s1;
exit;
end;
if zs then k:=k-1;
x:=1;
Edit2.Text:='';
for i:=1 to k do
begin
While (s2[x]<>'1') and (x<= length(S1)) do
begin
if s2[x]='5' then
begin
inc(x);
continue;
end;
if s2[x]='4' then
s3:=s3+s1[x]+'-'
else
s3:=s3+s1[x];
inc(x);
end;
if s2[x]='5' then
begin
inc(x);
continue;
end;
if s2[x+1]='1' then
begin
s3:=s3+s1[x]+'-';
inc(x)
end
else
begin
if s2[x+1]='4' then
begin
if i=k then
for j:=x to length(S1) do
s3:=s3+s1[j] else
s3:=s3+s1[x]+s1[x+1]+'-';
inc(x,2);
continue;
end;
if s2[x+1]='2' then
begin
if s2[x+2]='1' then
begin
s3:=s3+s1[x]+'-';
inc(x)
end
else
if s2[x+2]='2' then
begin
if i=k then
s3:=s3+s1[x]+s1[x+1]+s1[x+2] else
s3:=s3+s1[x]+'-';
inc(x,1)
end
else
if s2[x+2]='4' then
begin
if i=k then
for j:=x to length(S1) do
s3:=s3+s1[j]
else
s3:=s3+s1[x]+s1[x+1]+s1[x+2]+'-';
inc(x,3)
end
else
begin
if i=k then
for j:=x to length(S1) do
s3:=s3+s1[j]
else
s3:=s3+s1[x]+s1[x+1]+'-';
inc(x,2)
end;
end
else
if s2[x+1]='3' then
begin
if i=k then
for j:=x to length(S1) do
s3:=s3+s1[j]
else
begin
s3:=s3+s1[x]+'-';
inc(x);
end;
end
else
begin
if s2[x+1]='5' then
s3:=s3+s1[x]+'-' else
s3:=s3+s1[x];
inc(x);
end;
end;
end;
Label2.Caption:='Слогов в слове - '+IntToStr(k);
Edit2.Text:=s2;
Edit3.Text:=s3;
end;

function TForm1.glastrue(d: char): boolean;
begin
Result:=False;
if (d in Glas) or
(d ='ё') then
Result:=True;
end;

function TForm1.Gsoglastrue(d: char): boolean;
begin
Result:=False;
if d in Gsoglas then
Result:=True;
end;

function TForm1.Isklsimvtrue(d: char): boolean;
begin
Result:=False;
if d in IsklSimv then
Result:=True;
end;

function TForm1.Zsoglastrue(d: char): boolean;
begin
Result:=False;
if d in ZSoglas then
Result:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Form2.Free;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
case Button3.Tag of
0: begin
Form1.Height:=352;
Button3.Tag:=1;
end;
1: begin
Form1.Height:=216;
Button3.Tag:=0;
end;
end;
end;

end.



ЕСТЬ ТАМ ЧО НУЖНОГО?

Professor
03.04.2012, 06:37
ЕСТЬ ТАМ ЧО НУЖНОГО?
Конечно!
Например из "censored педераст" можно получить "тинпу передаст".А вот кому передаст и кто передаст это вопрос.

mikser
03.04.2012, 10:59
http://nick-name.ru/generate/
или не?
Неплохо но мне бы русский еще.

Добавлено через 1 минуту
лазил в нете и нашол прогу для деления на слоги и к ней кусок кода

Отлично щас посмотрю как она работает.

Добавлено через 1 час 24 минуты
Не получилось откомпилировать.
Naza, где ты его взял там должно быть еще описание формы и unit2.
а еще лучше откомпиленый exe'шник

Naza
03.04.2012, 12:16
http://monolife.fatal.ru/incd7/loadfile.php?autofreze=1&idp=4