Each person has 1/population probability of being selected. Validators compete for votes, and the voters are analogous to individual miners in a mining pool, each sharing their reward with the entire “voter pool” that has elected a miner. The randomness is provided by validators as they produce blocks, using a simple hash onion. Validators pre-commit n hashes, preventing any collusion attacks on the random number generation.
Pseudonym Pairs is, because it was easiest way, structured so that the personhoods are numbered. To select validator, 1 + randomNumber/(maxHash/getPopulation())
.