Cryptographically correct way to roll a giveaway winner
It looks mostly sound.
Why are you returning logs?
It is initialized to [] but never written to after that.
Are you aware of Crypto.Random.random.sample(population, k)?