define our own random which uses ThreadLocalRandom when available