Задать вопрос
bigton
@bigton
Web-программист

Подскажите генератор nickname 'ов (готовый скрипт или алгоритм)

Задача: реализовать для онлайн игры генератор красивых ников.
Сейчас эта задача решается так:

function nickname_gen() {
    $symbol_arr = array('aeiouy', 'bcdfghjklmnpqrstvwxz');
    $length = mt_rand(5, 8);
    $return = array();
    foreach ($symbol_arr as $k => $v)
        $symbol_arr[$k] = str_split($v);
    for ($i = 0; $i < $length; $i++) {
        while (true) {
            $symbol_x = mt_rand(0, sizeof($symbol_arr) - 1);
            $symbol_y = mt_rand(0, sizeof($symbol_arr[$symbol_x]) - 1);
            if ($i > 0 && in_array($return[$i - 1], $symbol_arr[$symbol_x]))
                continue;
            $return[] = $symbol_arr[$symbol_x][$symbol_y];
            break;
        }
    }
    $return = ucfirst(implode('', $return));
    return $return;
}
Мы делим все буквы латинского алфавита на гласные и согласные, а потом собираем из них слово нужной длинны (гласная+согласная+гласная+...).
На выходе получается:
Fytiha
Ivazuloh
Ytuma
Uxegon
Uxusec
Jyluvun
Raxuf
Tujeriha
Bemici
Ivinavih
Ники мы получаем, но они не красивые и не звучат.
Можете быть есть готовое решение на PHP или алгоритм, который строит слова с учетом фонетики?
Спасибо.

  • Вопрос задан
  • 17803 просмотра
Подписаться 6 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 9
Freika
@Freika
Senior Ruby on Rails developer
Мой генератор ников генерирует ники на основе смешения слогов. В массиве лежат слоги и алгоритм такой: рандомный слог-префикс + рандомный слог-серединка + рандомный слог-окончание. Проблема в том, что собирать базу слогов - ну очень мутно.
Ответ написан
hyena
@hyena

Эх, всё-таки самые красивые ники получаются из каталога Икеи...

Ответ написан
Комментировать
afiskon
@afiskon

Часто генерят путем транслитерации имени или фамилии пользователя и прибавления цифр года рождения.

Ну или можно вручную придумать десяток-другой "красивых" ников, потом разбить их на слоги и генерировать из них. Тут поможет pwgen. Например, было:

zeratog rootak erlanger

Разбиваем на части и получаем:

zetak rootanger

и так далее.

Ответ написан
yparah
@yparah

Гугль вам в помощь.

Вот например - http://rghost.ru/39359852

Ответ написан

На мой взгляд, вполне сносные ники, кстати. Один из вариантов доработки - может быть, стоит попробовать учесть частотность букв в обычных английских текстах (http://en.wikipedia.org/wiki/Letter_frequency). Например, у вас в никах много "y" и "x", которые обычно не очень частотны и могут вызывать ощущение неблагозвучности. Т. е. из гласных стоит чаще использовать "e", "a", "o" и т. д. Если получится найти статистику английских слогов, то можно попытаться использовать и ее.

Ответ написан
charon
@charon

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

Ответ написан
dginz
@dginz
Я когда-то писал алгоритм для генерации благозвучных легкогенерируемых паролей. Для этого я просто посчитал, с какой вероятностью за одной буквой будет следовать другая, анализируя, например, "Властелин Колец", далее я просто брал случайную первую букву и прибавлял к ней с учётом вероятности следующую и так далее, получались пароли вроде (возьмём в качестве длины 12 букв):
leeditedildo
rsiecayweeyo
qugendsivour
yandaskithee
kehefothevou

Вот код на C: https://github.com/ginz/getpass
Его можно легко переписать/приспособить к PHP.
Ответ написан
Комментировать
@AlexBin
Тоже писал генератор, выдает вот такие слова.

Tristrag Mansel Oricated Nalere Stinat Ratemath Cesele Tralis Geselica Marretitit Terrec Caritarr Kintatim Derage Cletiane Acedianc Aricatem Inaton Latinate Pinintia Strinese Gerissente Visermar Ressit Vellicte Hantemat Ratter Enetie Lerrelat.
Ответ написан
Комментировать
@kuzma95
Есть генератор апи, работает на основе реальных слов https://rustxt.ru/generator-nick-name
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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