The markov chain trains on a big set of geniune usernames (usernames.txt) and records the character transition probabilities.
We then calculate the transition probability scores of a set of genuine looking and gibberish usernames (train.txt) and the extract the mean and standard deviation of the scores. We do this to get the z-score of a username's transition probaility score which helps in comparing with the results of the training dataset. A negative z-score indicates a gibberish username and positive one indicates a genuine one.