The following project arose from one of my many interests, which often influence the direction of projects that I undertake in unexpected ways.
From role-playing games to stories, I've always struggled with naming my characters (Clementine Peachling, Abbas Faulkner, Horhay Frontline, and Bobrita, to name a few). After perusing various random name generators, I thought it would be fun to create my own.
Wanting to take a fresh approach to this project, I decided to not look into others' solutions. My initial program was a simple algorithm that alternated between random sets of consonants and vowels before choosing a randomized ending. However, as you can imagine, it would often generate barely-pronounceable names. Thus, I became aware of the need to research what others had done before.
Enter Markov chains.
Markov chains not only enable realistic yet randomized name generation, but also can be used for a wide variety of applications. All it requires is a large number of examples or source material to train itself and it can produce output similar to the source material.
I incorporated Markov chains in my program by: