Generate random words based on extracting N-character unigrams from one or more source files, selecting a random start gram and then adding compatible transitions from the selected sources, until it either reaches an end gram or exceeds the requested length and adds a valid end gram.
It's possible to run out of unique words if you exclude source words and set the number of tokens too low.
Lower-case input files created by Chris Pound, gradually being replaced by larger files drawn from Project Gutenberg, Early Indo-European Online, Enamdict, NKJP, etc., plus extracts from the US Census, Das Nibelungenlied, P.C. Hodgell's novels, Traveller SEC files, /usr/dict/words, the Jargon File, etc; currently extracting data from Deltacorpus. 10x speedup in weighted-random selection from Acme::Tools::random.