In some situations, it is useful to be able to generate random sequences of letters in such a way that the result can be pronounced. The application presented in this paper is a set of domain names for a simulated Web population. Crawford and Aycock also mention passwords, possible company names, and names for new products. Password generation, in particular, has attracted attention over the years, and the authors have collected a number of references in this area. Most previous algorithms produce, unfortunately, a goodly portion of sequences that are difficult to pronounce.
Crawford and Aycock describe an algorithm that first reads a dictionary, and then hyphenates its words to yield syllables. Each syllable is stored in a hash table entry keyed by the previous syllable. The entries are lists of syllables in which duplicates are not removed, thus preserving the frequency information. Words are generated by a Markov process that randomly selects a syllable from the successor list of the current syllable. The resulting set of sequences will obviously reflect the style of words in the dictionary chosen for training.
This short paper is easy to read and the algorithm is clearly stated. It provides a good summary of previous work and an excellent list of references. I recommend it to anyone who needs to generate names or who is merely interested in the process.