Generate(MinLotteryNumber min, MaxLotteryNumber max, LotteryLength length) { if (min is null) { throw new ArgumentNullException(nameof(min)); } if (max is null) { throw new ArgumentNullException(nameof(max)); } if (length is null) { throw new ArgumentNullException(nameof(length)); } var random = new Random(); var numbers = Enumerable.Range(min, max) .OrderBy(x => random.Next()) .Take(length) .ToList(); numbers.Sort(); return(numbers.Select(x => new LotteryNumber(x))); }
public LotteryResult Run(LotteryRun run) { if (run is null) { throw new ArgumentNullException(nameof(run)); } var length = new LotteryLength(run.IncludeBonusBall ? _definition.Length + 1 : _definition.Length); var(numbers, bonusBall) = (_generator.Generate(_definition.Min, _definition.Max, length), (LotteryNumber)null); if (run.IncludeBonusBall) { (numbers, bonusBall) = SeparateBonusBallFromLotteryNumbers(numbers); } return(new LotteryResult(numbers, bonusBall)); }