When picking transition and emission probabilities, I generally hard-code these. That makes it harder to generate systems of arbitrary size for debugging. It also means we're less likely to see things like very low transition probabilities which can cause numerical issues for decoding.
Using a dirichlet distribution, we'd be able to set these parameters randomly every time.
https://en.wikipedia.org/wiki/Dirichlet_distribution
possible C++ implementation:
https://github.com/gcant/dirichlet-cpp
Downside: likely requires an additional library just for debugging