When I listed the options, it didn't occur to me that ReaderWriterLockSlim implements IDisposable. I think it's quite unattractive to make RandomRangedNumberGenerator IDisposable, just for the sake of making it thread-safe, so I would prefer one of the other options.