Example #1
0
        /// <summary>
        /// The run method with each time and get the best numbers.
        /// </summary>
        /// <param name="action">
        /// The action.
        /// </param>
        /// <param name="count">
        /// The count.
        /// </param>
        /// <param name="typesOfDrawn">
        /// The t drawn.
        /// </param>
        public void RunMethodWithEachTimeAndGetTheBestNumbers(MethodInfo action, int count, Enums.TypesOfDrawn typesOfDrawn)
        {
            if (LotteryModels == null)
            {
                LotteryModels = new List <LotteryModel>();
            }
            Dictionary <int, int> numbersDictionary = new Dictionary <int, int>();

            Console.WriteLine($"{typesOfDrawn} {count} Times");
            int index        = 0;
            int errorCounter = 0;
            int skipRutinWhenReachThisNumber = 200;

            while (index != count)
            {
                LotteryModel returnedModel = (LotteryModel)action.Invoke(this, null);
                if (skipRutinWhenReachThisNumber == errorCounter)
                {
                    Console.WriteLine("You cant genreate numbers with this method, because numbers dosent right for it");
                    break;
                }

                if (returnedModel == null || !returnedModel.ValidationTuple().Item1)
                {
                    errorCounter++;
                    continue;
                }
                index++;
                foreach (var returnedModelNumber in returnedModel.Numbers)
                {
                    if (numbersDictionary.Count > 0 && numbersDictionary.ContainsKey(returnedModelNumber))
                    {
                        numbersDictionary[returnedModelNumber]++;
                    }
                    else
                    {
                        numbersDictionary.Add(returnedModelNumber, 1);
                    }
                }
            }

            var          sortedDic          = numbersDictionary.OrderByDescending(x => x.Value).Take(lotteryRule.PiecesOfDrawNumber);
            LotteryModel resultLotteryModel = new LotteryModel(lotteryRule);

            foreach (KeyValuePair <int, int> keyValuePair in sortedDic)
            {
                resultLotteryModel.Numbers.Add(keyValuePair.Key);
            }

            if (LotteryModels.AddValueWithDetailsAndValidation(resultLotteryModel.ValidationTuple(), typesOfDrawn))
            {
                OnLotteryModelEvent(resultLotteryModel);
            }
        }
Example #2
0
        public List <string> GetLotteryModelAsStrList(LotteryModel lm)
        {
            List <string> concate = new List <string>
            {
                LotteryHandler.GetWeeksInYear().ToString(CultureInfo.InvariantCulture)
            };

            concate.Add(lm.Message.ToString());
            concate.Add(String.Join(",", lm.Numbers.OrderBy(x => x).Select(x => x.ToString())));
            concate.Add(UserName);
            concate.Add(lm.LotteryRule.LotteryType.ToString());
            return(concate);
        }
Example #3
0
        /// <summary>
        /// The by average steps execute.
        /// </summary>
        /// <returns>
        /// The <see cref="LotteryModel"/>.
        /// </returns>
        public LotteryModel ByAverageStepsExecute()
        {
            LotteryModel lm     = new LotteryModel(lotteryRule);
            int          start2 = GetRandomNumber(lotteryRule);

            lm.AddNumber(start2);

            foreach (double d in this.LotteryStatistic.AvarageStepByStep)
            {
                lm.AddNumber(lm.Numbers.Last() + (int)Math.Round(d, 0));
            }

            return(lm);
        }
Example #4
0
        /// <summary>
        /// The make statistic from earlier week.
        /// </summary>
        public void MakeStatisticFromEarlierWeek()
        {
            List <SaveNumber> getLotteryDrawing = this.SaveNumbers
                                                  .Where(x => x.WeekOfPull == this.lotteryCollection.Last().WeekOfLotteryDrawing).ToList();
            LotteryModel lastDrawing = this.lotteryCollection.Last();

            for (int i = 0; i < lotteryRule.PiecesOfDrawNumber; i++)
            {
                foreach (var t1 in getLotteryDrawing)
                {
                    var e = t1.Numbers[i];
                    var k = lastDrawing.Numbers[i];
                    var t = (double)e / k;
                    t1.DifferentInPercentage.Add(t);
                }
            }
        }
Example #5
0
        public void RunMethodWithEachTimeAndGetTheMostCommonSeries(MethodInfo action, int count, Enums.TypesOfDrawn typesOfDrawn)
        {
            if (LotteryModels == null)
            {
                LotteryModels = new List <LotteryModel>();
            }
            Dictionary <string, int> numbersDictionary = new Dictionary <string, int>();

            Console.WriteLine($"{typesOfDrawn} {count} Times");
            int index = 0;

            while (index != count)
            {
                LotteryModel returnedModel = (LotteryModel)action.Invoke(this, null);
                if (returnedModel == null || !returnedModel.ValidationTuple().Item1)
                {
                    continue;
                }

                index++;

                if (numbersDictionary.Count > 0 && numbersDictionary.ContainsKey(returnedModel.ToString()))
                {
                    numbersDictionary[returnedModel.ToString()]++;
                }
                else
                {
                    numbersDictionary.Add(returnedModel.ToString(), 1);
                }
            }

            KeyValuePair <string, int> sortedDic = numbersDictionary.OrderByDescending(x => x.Value).ToList()[0];
            LotteryModel resultLotteryModel      = new LotteryModel(lotteryRule);
            var          numbers = sortedDic.Key.Split(", ");

            foreach (string number in numbers)
            {
                resultLotteryModel.Numbers.Add(Convert.ToInt32(number));
            }


            if (LotteryModels.AddValueWithDetailsAndValidation(resultLotteryModel.ValidationTuple(), typesOfDrawn, Enums.GenerateType.MostCommonSeries))
            {
                OnLotteryModelEvent(resultLotteryModel);
            }
        }
Example #6
0
        /// <summary>
        /// The by interval execute.
        /// </summary>
        /// <returns>
        /// The <see cref="LotteryModel"/>.
        /// </returns>
        public LotteryModel ByIntervalExecute()
        {
            var actual = this.NumberSections.Where(x => x.ActualNumber == this.lotteryCollection.Last().Numbers.First());

            LotteryModel lm = new LotteryModel(lotteryRule);

            for (int i = 0; i < lotteryRule.PiecesOfDrawNumber; i++)
            {
                int max = 0;
                List <IOrderedEnumerable <SpecifyNumber> > spec = actual.Select(x => x.SpecifyNumberList.OrderByDescending(xy => xy.Pieces)).ToList();
                List <int>    maxCount = spec[0].Select(x => x.Pieces).OrderByDescending(x => x).ToList();
                SpecifyNumber getSec   = spec[0].First(x => x.Pieces == maxCount[max]);

                while (true)
                {
                    if (lm.Numbers.Contains(getSec.NextNumber))
                    {
                        max++;
                        getSec = spec[0].First(x => x.Pieces == maxCount[max]);
                    }
                    else
                    {
                        if (lm.Numbers.Count == 0)
                        {
                            break;
                        }
                        if (getSec.NextNumber > lm.Numbers.Max())
                        {
                            break;
                        }
                        max++;
                        getSec = spec[0].First(x => x.Pieces == maxCount[max]);
                    }
                }

                var getAf = getSec.NextNumber;
                lm.Numbers.Add(getAf);
                actual = this.NumberSections.Where(x => x.ActualNumber == getAf);
            }

            return(lm);
        }
Example #7
0
        /// <summary>
        /// The by occurrence execute.
        /// </summary>
        /// <returns>
        /// The <see cref="LotteryModel"/>.
        /// </returns>
        public LotteryModel ByOccurrenceExecute()
        {
            LotteryModel lm = new LotteryModel(lotteryRule);

            var    getSections    = this.NumberSections.Last(x => this.lotteryCollection.Last().Numbers.First() == x.ActualNumber);
            Random random         = new Random();
            int    start2         = random.Next(0, getSections.SpecifyNumberList.Count);
            var    generateNumber = (SpecifyNumber)getSections.SpecifyNumberList[start2].Clone();

            lm.AddNumber(generateNumber.NextNumber);
            for (int k = 0; k < lotteryRule.PiecesOfDrawNumber - 1; k++)
            {
                getSections = this.NumberSections.First(x => lm.Numbers.Last() == x.ActualNumber);

                while (true)
                {
                    random = new Random();
                    if (getSections.SpecifyNumberList.Count > 10)
                    {
                        start2         = random.Next(0, getSections.SpecifyNumberList.Count);
                        generateNumber = (SpecifyNumber)getSections.SpecifyNumberList[start2].Clone();
                    }
                    else
                    {
                        start2         = GetRandomNumber(lotteryRule);
                        generateNumber = new SpecifyNumber(start2);
                    }

                    if (!lm.Numbers.Contains(generateNumber.NextNumber))
                    {
                        break;
                    }
                }

                lm.AddNumber(generateNumber.NextNumber);
            }

            return(lm);
        }
Example #8
0
        /// <summary>
        /// The by average randoms execute.
        /// </summary>
        /// <returns>
        /// The <see cref="LotteryModel"/>.
        /// </returns>
        public LotteryModel ByAverageRandomsExecute()
        {
            LotteryModel lm = new LotteryModel(lotteryRule);

            for (int i = 0; i < lotteryRule.PiecesOfDrawNumber; i++)
            {
                var goal = this.LotteryStatistic.AvarageRandom[i];
                int id   = 0;
                while (true)
                {
                    if (id == (int)goal)
                    {
                        lm.AddNumber(GetRandomNumber(lotteryRule));
                        break;
                    }

                    id++;
                }
            }

            return(lm);
        }
Example #9
0
        /// <summary>
        /// The by sums execute.
        /// </summary>
        /// <returns>
        /// The <see cref="LotteryModel"/>.
        /// </returns>
        public LotteryModel BySumsExecute()
        {
            var getLastSum = this.lotteryCollection.Last().Sum;

            // find another same sum in list
            LotteryModel getPenultimateSumId;

            while (true)
            {
                Random rnd          = new Random();
                var    foundLastSum = lotteryCollection.Select((v, i) => new { Index = i, Value = v }).Where(x => x.Value.Sum == getLastSum)
                                      .Select(x => x.Value.Id)
                                      .ToList();
                if (foundLastSum.Count > 2)
                {
                    var tek = rnd.Next(1, foundLastSum.Count - 1);
                    getPenultimateSumId = this.lotteryCollection.FirstOrDefault(x => x.Id == foundLastSum[tek] + 1);

                    break;
                }

                getLastSum++;
            }

            LotteryModel lm = new LotteryModel(lotteryRule);

            for (int i = 0; i < lotteryRule.PiecesOfDrawNumber; i++)
            {
                lm.AddNumber(GetRandomNumber(lotteryRule));
            }

            if (getPenultimateSumId != null && (lm.Sum >= getPenultimateSumId.Sum - 10 && lm.Sum <= getPenultimateSumId.Sum + 10))
            {
                return(lm);
            }

            return(null);
        }
Example #10
0
        public LotteryModel ByMachineLearningExecute()
        {
            try
            {
                if (this.lotteryRule.LotteryType != Enums.LotteryType.TheFiveNumberDraw)
                {
                    return(null);                                                                     //TODO: Make this for 6 and custom lottery draw
                }
                LotteryModel lm  = new LotteryModel(lotteryRule);
                var          dbl = new List <LotteryResult>();
                foreach (LotteryModel lotteryModel in this.lotteryCollection)
                {
                    var res = new LotteryResult(
                        lotteryModel.Numbers[0],
                        lotteryModel.Numbers[1],
                        lotteryModel.Numbers[2],
                        lotteryModel.Numbers[3],
                        lotteryModel.Numbers[4]
                        );

                    dbl.Add(res);
                }

                dbl.Reverse();
                var deep    = 20;
                var network = new BasicNetwork();
                network.AddLayer(
                    new BasicLayer(null, true, 5 * deep));
                network.AddLayer(
                    new BasicLayer(
                        new ActivationSigmoid(), true, 4 * 5 * deep));
                network.AddLayer(
                    new BasicLayer(
                        new ActivationSigmoid(), true, 4 * 5 * deep));
                network.AddLayer(
                    new BasicLayer(
                        new ActivationLinear(), true, 5));
                network.Structure.FinalizeStructure();
                var learningInput = new double[deep][];
                for (int i = 0; i < deep; ++i)
                {
                    learningInput[i] = new double[deep * 5];
                    for (int j = 0, k = 0; j < deep; ++j)
                    {
                        var           idx  = 2 * deep - i - j;
                        LotteryResult data = dbl[idx];
                        learningInput[i][k++] = (double)data.V1;
                        learningInput[i][k++] = (double)data.V2;
                        learningInput[i][k++] = (double)data.V3;
                        learningInput[i][k++] = (double)data.V4;
                        learningInput[i][k++] = (double)data.V5;
                    }
                }
                var learningOutput = new double[deep][];
                for (int i = 0; i < deep; ++i)
                {
                    var idx  = deep - 1 - i;
                    var data = dbl[idx];
                    learningOutput[i] = new double[5]
                    {
                        (double)data.V1,
                        (double)data.V2,
                        (double)data.V3,
                        (double)data.V4,
                        (double)data.V5
                    };
                }
                var trainingSet = new BasicMLDataSet(
                    learningInput,
                    learningOutput);

                var train = new ResilientPropagation(
                    network, trainingSet);
                train.NumThreads = Environment.ProcessorCount;
START:
                network.Reset();
RETRY:
                var step = 0;
                do
                {
                    train.Iteration();
                    Console.WriteLine("Train Error: {0}", train.Error);
                    ++step;
                }while (train.Error > 0.001 && step < 20);
                var passedCount = 0;
                for (var i = 0; i < deep; ++i)
                {
                    var should =
                        new LotteryResult(learningOutput[i]);
                    var inputn = new BasicMLData(5 * deep);
                    Array.Copy(
                        learningInput[i],
                        inputn.Data,
                        inputn.Data.Length);
                    var comput =
                        new LotteryResult(
                            ((BasicMLData)network.
                             Compute(inputn)).Data);
                    var passed = should.ToString() == comput.ToString();
                    if (passed)
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                        ++passedCount;
                    }
                }

                var input = new BasicMLData(5 * deep);
                for (int i = 0, k = 0; i < deep; ++i)
                {
                    var idx  = deep - 1 - i;
                    var data = dbl[idx];
                    input.Data[k++] = (double)data.V1;
                    input.Data[k++] = (double)data.V2;
                    input.Data[k++] = (double)data.V3;
                    input.Data[k++] = (double)data.V4;
                    input.Data[k++] = (double)data.V5;
                }
                var           perfect = dbl[0];
                LotteryResult predict = new LotteryResult(
                    ((BasicMLData)network.Compute(input)).Data);
                Console.WriteLine("Predict: {0}", predict);

                if (predict.IsOut())
                {
                    goto START;
                }

                var t       = passedCount < (deep * (double)9 / (double)10);
                var isvalid = predict.IsValid();

                if (t ||
                    !isvalid)
                {
                    goto RETRY;
                }

                lm.AddNumber(predict.V1);
                lm.AddNumber(predict.V2);
                lm.AddNumber(predict.V3);
                lm.AddNumber(predict.V4);
                lm.AddNumber(predict.V5);

                return(lm);
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.ToString());
                return(null);
            }
        }