these interfaces are required to be thread-safe even though they are not state-free. the random number sequence is shared across all threads.