public List <int[]> GenerateSequence()
        {
            int maximumPickCount    = GetFieldParamValueForCount(0);
            int selectedCoefficient = GetFieldParamValueForCount(1);

            List <LotteryDrawResult> lotteryDrawResults = this.lotteryDataServices.GetLatestLotteryResult(maximumPickCount);
            String drawDate = DateTimeConverterUtils.ConvertToFormat(this.lotteryDataServices.GetNextDrawDate(),
                                                                     DateTimeConverterUtils.STANDARD_DATE_FORMAT) + " 00:00:00.0";
            List <int[]> results = new List <int[]>();

            foreach (LotteryDrawResult lotDraw in lotteryDrawResults)
            {
                FastTreeInputModel sampleData = lotDraw.GetFastTreeInputModel();
                var predictionResult          = FastTreePredictor.Predict(sampleData);

                //Console.WriteLine(String.Format("Data: {0}, {1},{2},{3},{4},{5},{6},{7},{8} ", sampleData.Draw_date,
                //    sampleData.Num1, sampleData.Num2, sampleData.Num3, sampleData.Num4, sampleData.Num5, sampleData.Num6,
                //    sampleData.Game_cd.ToString(), predictionResult.Score.ToString("G20")));

                float tmpScore = predictionResult.Score;
                if (tmpScore <= 0)
                {
                    tmpScore = (tmpScore * -1) + 1;
                }

                if (int.Parse((tmpScore * 1000).ToString("G20").Substring(0, 1)) >= selectedCoefficient)
                {
                    int[] x = ConvertAndFillSequence(predictionResult.Score);
                    if (IsUniqueSequence(results, x))
                    {
                        results.Add(x);
                    }
                }
            }
            return(results);
        }
        public List <int[]> GenerateSequence()
        {
            StartPickGeneration();
            String drawDate = DateTimeConverterUtils.ConvertToFormat(this.lotteryDataServices.GetNextDrawDate(),
                                                                     DateTimeConverterUtils.STANDARD_DATE_FORMAT) + " 00:00:00.0";
            List <int[]> results = new List <int[]>();

            int    selectedCoefficient = GetFieldParamValueForCount(1);
            int    maximumPickCount    = GetFieldParamValueForCount(0);
            Random rnd = new Random();

            int loopBreaker    = 0;
            int maxLoopBreaker = int.MaxValue - 100;

            while (true)
            {
                int[] lp = LuckyPickGenerator(rnd);

                // Create single instance of sample data from first line of dataset for model input
                FastTreeInputModel sampleData = new FastTreeInputModel()
                {
                    Draw_date = drawDate,
                    Num1      = lp[0],
                    Num2      = lp[1],
                    Num3      = lp[2],
                    Num4      = lp[3],
                    Num5      = lp[4],
                    Num6      = lp[5],
                    Game_cd   = this.lotteryDataServices.LotteryDetails.GameCode
                };

                // Make a single prediction on the sample data and print results
                var predictionResult = FastTreePredictor.Predict(sampleData);

                float tmpScore = predictionResult.Score;
                if (tmpScore <= 0)
                {
                    tmpScore = (tmpScore * -1) + 1;
                }

                PickGenerationProgressEvent.IncrementGenerationAttemptCount();

                if (int.Parse(tmpScore.ToString().Substring(0, 1)) >= selectedCoefficient)
                {
                    if (IsUniqueSequence(results, lp))
                    {
                        results.Add(lp);
                    }
                    PickGenerationProgressEvent.IncrementGeneratedPickCount();
                }

                if (!IsContinuePickGenerationProgress())
                {
                    break;
                }
                if (loopBreaker++ >= maxLoopBreaker)
                {
                    break;
                }
                if (results.Count >= maximumPickCount)
                {
                    break;
                }
            }
            RaisePickGenerationProgress();
            StopPickGeneration();
            return(results);
        }