Skip to content

Instantly share code, notes, and snippets.

@ryx
Last active January 21, 2019 10:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ryx/ce24ca0629d4950a524b1e2588d5809d to your computer and use it in GitHub Desktop.
Save ryx/ce24ca0629d4950a524b1e2588d5809d to your computer and use it in GitHub Desktop.
Random (German) Name Generator
/**
* Creates "contemporary" german (mainly female) names, with a little bit of fun added ;)
*
* Examples:
* Gerna-Bertomine Braunlens
* Brunlamunde Ringer-Rot
* Joladane zu Paffeneier
* Jora Wollenlens-Schiss
* Lata Krachling
* Klonlaela Grün-Eichelhorst
* Siefumine Wollenner-Schmidthagen
* Nalalane Braun-Füllfeld
* Gerdalinde von Braun
*/
function getRnd(arr) {
return arr[parseInt(Math.random() * arr.length, 10)]
}
function generateFirstName() {
const chunksFore = ['Ber', 'Brun', 'Sieg', 'Mecht', 'Mi', 'Jo', 'Sie','Jaqcue', 'Lo', 'So', 'La', 'Ro', 'Ro', 'Er', 'Ger', 'Paula', 'Man', 'Klau', 'Klon', 'Fer', 'Na', 'Nu'];
const chunksMiddle = ['ta', 'to', 'na', 'mi', 'ca', 'schi', 're', 'ra', 'fu', 'se', 'na', 'da', 'la'];
const chunksBack = ['linde', 'hilde', 'friede', 'solde', 'ela', 'lena', 'nate', 'line', 'dana', 'dane', 'phie', 'munde', 'dine', 'dia', 'dula', 'lane', 'mine'];
return getRnd(chunksFore) + getRnd(chunksMiddle) + (Math.random() > 0.25 ? getRnd(chunksBack) : '');
}
function generateLastName() {
const chunksFore = ['Müller', 'Meyer', 'Meisel', 'Wallen', 'Wollen', 'Schmidt', 'Schiss', 'Rosen', 'Paffen', 'Schulz', 'Rin', 'Holz', 'Hasel', 'Eichel', 'Feld', 'Rans', 'Schwanz', 'Schwarz', 'Braun', 'Gelb', 'Grün', 'Rot', 'Fer', 'Schwei', 'Fisch', 'Helm', 'Brun', 'Hohe', 'Hohen', 'Suck', 'Ross', 'Kack', 'Minz', 'Bech', 'Pech', 'Krach', 'Loch', 'Füll', 'Kiff', 'Pfeffer'];
const chunksBack = ['hausen', 'haus', 'heim', 'feld', 'felt', 'puss', 'punz', 'furz', 'hagen', 'lens', 'stein', 'horst', 'dorf', 'stedt', 'hans', 'wald', 'wolt', 'ling', 'furcht', 'berg', 'ger', 'ler', 'men', 'gerd', 'gert', 'fried', 'eier', 'acker', 'furt', 'lind', 'ner', 'horn', 'egger', 'fluss', 'gras'];
let name = getRnd(chunksFore) + (Math.random() > 0.5 ? getRnd(chunksBack) : '');
// add second name via connector?
if (Math.random() >= 0.33) {
name += '-' + getRnd(chunksFore) + (Math.random() > 0.5 ? getRnd(chunksBack) : '');
}
return name;
}
function generateName() {
const firstName = generateFirstName() + (Math.random() >= 0.9 ? `-${generateFirstName()}` : '');
const lastName = (Math.random() < 0.1 ? `${getRnd(['von', 'zu', 'an'])} ` : '') + generateLastName();
return firstName + ' ' + lastName;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment