generate random numbers - bit of a hotpotch between Enums, Ranges and handcarved accumulators