Ian Bell has released C source code for a text-version of Elite, and it contains the name generator: http://www.iancgbell.clara.net/elite/text/
I think I might have worked from Christian Pinder's reverse-engineered C code, which doesn't seem to be available from that site anymore.
Here's my Python version. If you set ELITE = True, successive calls to name() will generate the sequence of names used in the game -- look for Lave on call 7 (starting from 0); otherwise you'll get a random sequence.
Code:
ELITE = False
if ELITE:
seed = [0x5A4A, 0x0248, 0xB753]
else:
import random
seed = [random.randint(0, 0xffff), random.randint(0, 0xffff), random.randint(0, 0xffff)]
def tweakseed():
temp = (seed[0] + seed[1] + seed[2]) % 0x10000
seed[0] = seed[1]
seed[1] = seed[2]
seed[2] = temp
digraphs = "..lexegezacebisousesarmaindirea.eratenberalavetiedorquanteisrion"
def name():
longnameflag = seed[0] & 0x40
name = ""
for n in range(4):
d = ((seed[2] >> 8) & 0x1f) << 1
tweakseed()
if n < 3 or longnameflag:
name += digraphs[d:d+2]
return name.replace(".", "").title()