Settlement size types are as follow:
(We generate a cityFreq number with rng.Int32(135430))
Pop lvl 0: Encampment : Population 1 to 10 : Freq <= 41
Pop lvl 1: Homestead : Population 10 to 100 : Freq <= 1294
Pop lvl 2: Hamlet : Population 100 to 500 : Freq <= 6515
Pop lvl 3: Village : Population 500 to 2500 : Freq <= 54231
Pop lvl 4: Small Town : Population 2500 to 10,000 : Freq <= 98997
Pop lvl 5: Large Town : Population 10,000 to 50,000 : Freq <= 125154
Pop lvl 6: Small City : Population 50,000 to 250,000 : Freq <= 133343
Pop lvl 7: Large City : Population 250,000 to 1 million : Freq <= 134898
Pop lvl 8: Metropolis : Population 1 to 3 million : Freq <= 135300
Pop lvl 9: Conurbation : Population 3 to 10 million : Freq <= 135390
Pop lvl A: Megalopolis : Population 10 to 100 million : Freq <= 135408
Pop lvl B: Gigalopolis : Population 100 million to 1 billion : Freq <= 135423
Pop lvl C: Eperopolis : Population 1 to 3.6 billion : Freq <= 135430
Eventually, giving these different port/station unique models would be good, but I'll settle on getting it to work first.
First hurdle is understanding this bit of code:

I know that it is a fixed operation, and that it results in a random number between 0.00008 (probably to do with 80,000) & 0.000025 (250,000), okay now that I wrote this out, I might understand a little bit better what is going on here.