Esempio n. 1
0
        private void UpdateProbabilitiesByPosType(PositionType positionType, List <RDeepPosition> LastNumbers, RDeepPosition currentPos)
        {
            int   HitCount    = 1;
            int   Factor      = 0;
            float UpgradeRate = 0;

            PositionTypeSubCategory subCategory = GetPositonSubCategoryByPositionType(positionType);
            PositionTypeCategory    category    = GetPositonTypeCategory(subCategory);

            PositionType hitPositionType = GetPositionType(subCategory, currentPos);

            List <RDeepPosition> fromNumbers = new List <RDeepPosition>();

            if (hitPositionType == PositionType.Straight)
            {
                fromNumbers.Add(currentPos);
            }
            else
            {
                fromNumbers = RDeepPositions.NumbersByPositionType(positionType).ToList();
            }

            List <RDeepPosition> toNumbers = wheelNumbers.Except(fromNumbers).ToList();

            if (positionType == hitPositionType)
            {
                // *** On Hit ***
                if (positionType != PositionType.Straight)
                {
                    HitCount = GetPositionTypeHitCount(subCategory, LastNumbers);
                }

                Factor = GetProbabilityUpgradeFactorsOnHit(category, HitCount);
            }
            // *** On Miss ***

            Factor += GetProbabilityUpgradeFactorsOnFewerHits(LastNumbers, category, positionType);

            float Rate = GetProbabilityUpgradeRate(fromNumbers.Count());

            UpgradeRate = Factor * Rate;

            ShiftProbability(fromNumbers, positionType, UpgradeRate);
            ShiftProbability(toNumbers, positionType, UpgradeRate * -1);
        }
Esempio n. 2
0
        private int GetProbabilityUpgradeFactorsOnHit(PositionTypeCategory category, int hitCount)
        {
            List <int> ProbabilityUpgradeFactorOnHit = new List <int>();

            ProbabilityUpgradeFactorOnHit = probabilityUpgradeFactorsOnHit[category];

            if (category == PositionTypeCategory.Straight)
            {
                hitCount = 1;
            }

            if (ProbabilityUpgradeFactorOnHit.Count <= hitCount)
            {
                return(ProbabilityUpgradeFactorOnHit.Last());
            }

            return(ProbabilityUpgradeFactorOnHit[hitCount]);
        }
Esempio n. 3
0
        public int GetProbabilityUpgradeFactorsOnFewerHits(List <RDeepPosition> LastPositions, PositionTypeCategory category, PositionType positionType)
        {
            int factor = 0;

            List <UpgradeProbabilityOnFewerHits> upgradeProbabilityOnFewerHits = probabilityUpgradeFactorsOnFewerHits[category];

            foreach (UpgradeProbabilityOnFewerHits factorData in upgradeProbabilityOnFewerHits)
            {
                if (LastPositions.Count >= factorData.SpinCount)
                {
                    IEnumerable <RDeepPosition> Last_N_Numbers = LastPositions.Skip(Math.Max(0, LastPositions.Count() - factorData.SpinCount));

                    if (Last_N_Numbers.Count(number => number.Column == positionType || number.Dozen == positionType || number.OddEven == positionType || number.LowHigh == positionType || number.Color == positionType)
                        <= factorData.HitCount)
                    {
                        factor += factorData.UpgradeFactor;
                    }
                }
            }
            return(factor);
        }