Thanks! I often put a little too much effort into being efficient with file size and processing load, though I will admit this little project isn't super well optimised really.
The names are actually not completely random, and are generated using three strings and a randomised integer, plus a character-specific integer denoting the length of the name that needs to be generated and a starting point for the RNG'd integer.
The code is something like
If current_name_length < goal_name_length, generate random number for starting position
It then uses the random number to do a lookup on a string that looks like this:
1211221121122122121211221122122122112112122112211212121212112212212211211221221122122112121121122112112122112
This is essentially the syntax for names, which gives everything a random-but-consistent appearance, where 1 is a vowel and 2 is a consonant.
So if a character has a name that's 5 characters long and starts at position 10, it pulls a string that looks like this: 11221
It then replaces each 1 with a random vowel from a string of vowels, and each 2 with a random consonant from a string of consonants, so you might end up with something like Aewlo or Iupno or something, which aren't real names but feel appropriately alien.
Hopefully that's a little enlightening! :D