Added back streak-counting, as double-selections of a phoneme category can occur, but are uncommon
Streak modifier, which discourages double selections, has its strength randomly generated within the interval 0.35 to 0.5
Vowel probability varies between 0.4 and 0.6 - during some runs vowels are a more likely choice at each selection, othertimes not
Added debug prints (commented out) for displaying selected symbols (c or v) and probabilities that drove them
Started outlining what a phoneme class might look like
Added message describing current state of generator
This version assigns phonemes with random probabilities which biases their selection, making some phonemes less common than others.
Vowels stored in a dict as keys, with random probabilities stored as their values. Values across all vowels are normalised.
Once vowel is desired, a random value is generated and the cumulative probabilities of the vowel set are traversed as a CDF until vowel is selected
Same approach is performed for consonant phonemes too
Took a dive into phonology and linguistics, adding lots of sporadic research notes and lines of inquiry
Warning prints for when vowel/consonant phoneme selection erroneously selects empty string (a current problem)
Fixed consonant probs normalisation typo which was causing some cSamples to fall above the consonant CDF
Added (commented out) print statements for checking that cumulative probabilities sum to 1
Protect against cumulative probabilities falling below cSample or vSample (due to rounding errors) by 'choosing' every phoneme until the sample falls within an interval and the loop breaks, or the last phoneme is reached
Introduced concept of popular and regular phonemes, whereby a small subsection of each set are granted high probabilities than regular phonemes, introducing obvious bias to generations
Re-arranged and tidied configuration code, parameterising magic numbers for later convenience
Removed unused vowel and consonant lists