add random kernel

* uniform distribution (user-defined bounds)
* normal distribution (user-defined mean and standard deviation)

This may at least partially address #179