Files
Zern-BlackOut/go_client/namegen.go
T
2026-05-23 22:18:08 +03:00

75 lines
3.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package main
import (
"fmt"
"math/rand"
"strings"
)
var maleFirstNames = []string{
"Александр", "Алексей", "Андрей", "Антон", "Арсений",
"Артур", "Артём", "Богдан", "Валерий", "Василий",
"Виктор", "Владислав", "Глеб", "Григорий", "Даниил",
"Денис", "Дмитрий", "Евгений", "Егор", "Иван",
"Игорь", "Илья", "Кирилл", "Леонид", "Максим",
"Марк", "Матвей", "Михаил", "Никита", "Николай",
"Олег", "Павел", "Пётр", "Роман", "Руслан",
"Сергей", "Станислав", "Тимофей", "Фёдор",
}
var femaleFirstNames = []string{
"Алина", "Алёна", "Анастасия", "Ангелина", "Анна",
"Вера", "Вероника", "Виктория", "Дарья", "Ева",
"Екатерина", "Елена", "Елизавета", "Ирина", "Кира",
"Кристина", "Ксения", "Любовь", "Маргарита", "Марина",
"Мария", "Милана", "Надежда", "Наталья", "Ольга",
"Полина", "Светлана", "София", "Татьяна", "Юлия", "Яна",
}
var lastNames = []string{
"Алексеев", "Андреев", "Антонов", "Баранов", "Белов",
"Белый", "Бельский", "Беляев", "Борисов", "Васильев",
"Великий", "Волков", "Воробьёв", "Григорьев", "Давыдов",
"Егоров", "Жуков", "Зайцев", "Захаров", "Иванов",
"Калинин", "Ковалёв", "Козлов", "Комаров", "Крамской",
"Кузнецов", "Кузьмин", "Лебедев", "Макаров", "Медведев",
"Михайлов", "Морозов", "Никитин", "Николаев", "Новиков",
"Орлов", "Островский", "Павлов", "Петров", "Покровский",
"Попов", "Раевский", "Романов", "Семёнов", "Сергеев",
"Смирнов", "Соколов", "Соловьёв", "Степанов", "Тарасов",
"Титов", "Толстой", "Трубецкой", "Филиппов", "Фролов",
"Фёдоров", "Чайковский", "Черный", "Яковлев",
}
// convertToFemaleSurname handles Russian suffix rules
func convertToFemaleSurname(surname string) string {
if strings.HasSuffix(surname, "ий") || strings.HasSuffix(surname, "ый") || strings.HasSuffix(surname, "ой") {
return surname[:len(surname)-4] + "ая"
}
if strings.HasSuffix(surname, "ов") || strings.HasSuffix(surname, "ев") ||
strings.HasSuffix(surname, "ин") || strings.HasSuffix(surname, "ын") ||
strings.HasSuffix(surname, "ёв") {
return surname + "а"
}
return surname
}
func generateName() string {
isFemale := rand.Intn(2) == 0
var fn string
if isFemale {
fn = femaleFirstNames[rand.Intn(len(femaleFirstNames))]
} else {
fn = maleFirstNames[rand.Intn(len(maleFirstNames))]
}
// 70% chance to have a last name
if rand.Float32() < 0.3 {
return fn
}
ln := lastNames[rand.Intn(len(lastNames))]
if isFemale {
ln = convertToFemaleSurname(ln)
}
return fmt.Sprintf("%s %s", fn, ln)
}