Alias method https://lips.cs.princeton.edu/the-alias-method-efficient-sampling-with-many-discrete-outcomes/