public List <int[]> GenerateSequence()
        {
            StartPickGeneration();
            int          maximumPickCount = GetFieldParamValueForCount(0);
            int          matchPerc        = GetFieldParamValueForCount(1);
            int          maxLoopBreaker   = int.MaxValue - 100;
            int          maxLoopCtr       = 0;
            List <int[]> results          = new List <int[]>();
            DrawResultWinCountInputModel sampleData;
            LotteryDrawResultSetup       lotteryDrawResult = new LotteryDrawResultSetup();

            lotteryDrawResult.GameCode = lotteryDataServices.LotteryDetails.GameCode;
            Random ran = new Random();

            while (results.Count < maximumPickCount)
            {
                int[] randomSeq = LuckyPickGenerator(ran);
                lotteryDrawResult.ResetSequenceToZero();
                lotteryDrawResult.FillNumberBySeq(randomSeq);
                sampleData = lotteryDrawResult.GetDrawResultWinCountInputModel(true);
                DrawResultWinCountOutputModel output = DrawResultWinCountPredictor.Predict(sampleData);
                int score = (int)(output.Score * 100);

                PickGenerationProgressEvent.IncrementGenerationAttemptCount();

                if (score >= matchPerc)
                {
                    Array.Sort(randomSeq);
                    results.Add(randomSeq);
                    PickGenerationProgressEvent.IncrementGeneratedPickCount();
                }
                if (!IsContinuePickGenerationProgress())
                {
                    break;
                }
                if (maxLoopCtr++ > maxLoopBreaker)
                {
                    break;
                }
            }
            RaisePickGenerationProgress();
            StopPickGeneration();
            return(results);
        }