Make Random library more principled

Based on @jcollard’s library, based on Haskell’s System.Random