Задача: реализовать для онлайн игры генератор красивых ников.
Сейчас эта задача решается так:
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
Ники мы получаем, но они не красивые и не звучат.Часто генерят путем транслитерации имени или фамилии пользователя и прибавления цифр года рождения.
Ну или можно вручную придумать десяток-другой "красивых" ников, потом разбить их на слоги и генерировать из них. Тут поможет pwgen. Например, было:
zeratog rootak erlanger
Разбиваем на части и получаем:
zetak rootanger
и так далее.
На мой взгляд, вполне сносные ники, кстати. Один из вариантов доработки - может быть, стоит попробовать учесть частотность букв в обычных английских текстах (http://en.wikipedia.org/wiki/Letter_frequency). Например, у вас в никах много "y" и "x", которые обычно не очень частотны и могут вызывать ощущение неблагозвучности. Т. е. из гласных стоит чаще использовать "e", "a", "o" и т. д. Если получится найти статистику английских слогов, то можно попытаться использовать и ее.
соберите большую подборку различных ников, статистически посчитайте вероятность различных 2-3 буквенных сочетаний в них, отберите самые вероятные и в генераторе просто случайным образом сочетайте их.