Author: Daniel Julien Thomas Devroye