random: added a random driver interface

how should this be designed?

I see this PR as a discussion forum for this long standing discussion
Just thinking out loud -> should we return `-1` for error to be consistent with other interfaces?