Beispiel #1
0
        private int GetPositionTypeHitCount(PositionTypeSubCategory subCategory, List <RDeepPosition> LastNumbers)
        {
            int result = 1;

            PositionType LastPositionType    = PositionType.Straight;
            PositionType CurrentPositionType = PositionType.Straight;

            for (int index = LastNumbers.Count - 1; index >= 0; index--)
            {
                CurrentPositionType = GetPositionType(subCategory, LastNumbers[index]);

                if (LastPositionType == CurrentPositionType)
                {
                    result++;
                }
                else if (LastPositionType != PositionType.Straight)
                {
                    break;
                }

                LastPositionType = CurrentPositionType;
            }

            return(result);
        }
Beispiel #2
0
 private PositionTypeCategory GetPositonTypeCategory(PositionTypeSubCategory subCategory)
 {
     if (subCategory == PositionTypeSubCategory.Color || subCategory == PositionTypeSubCategory.OddEven || subCategory == PositionTypeSubCategory.LowHigh)
     {
         return(PositionTypeCategory.Even);
     }
     else if (subCategory == PositionTypeSubCategory.Column || subCategory == PositionTypeSubCategory.Dozen)
     {
         return(PositionTypeCategory.Third);
     }
     else
     {
         return(PositionTypeCategory.Straight);
     }
 }
Beispiel #3
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);
        }
Beispiel #4
0
 private PositionType GetPositionType(PositionTypeSubCategory subCategory, RDeepPosition pos)
 {
     if (subCategory == PositionTypeSubCategory.Color)
     {
         if (pos.isRed)
         {
             return(PositionType.Red);
         }
         else
         {
             return(PositionType.Black);
         }
     }
     else if (subCategory == PositionTypeSubCategory.OddEven)
     {
         if (pos.isEven)
         {
             return(PositionType.Even);
         }
         else
         {
             return(PositionType.Odd);
         }
     }
     else if (subCategory == PositionTypeSubCategory.LowHigh)
     {
         if (pos.isLow)
         {
             return(PositionType.Low);
         }
         else
         {
             return(PositionType.High);
         }
     }
     else if (subCategory == PositionTypeSubCategory.Dozen)
     {
         if (pos.isFirstDozen)
         {
             return(PositionType.FirstDozen);
         }
         else if (pos.isSecondDozen)
         {
             return(PositionType.SecondDozen);
         }
         else
         {
             return(PositionType.ThirdDozen);
         }
     }
     else if (subCategory == PositionTypeSubCategory.Column)
     {
         if (pos.isFirstColumn)
         {
             return(PositionType.FirstColumn);
         }
         else if (pos.isSecondColumn)
         {
             return(PositionType.SecondColumn);
         }
         else
         {
             return(PositionType.ThirdColumn);
         }
     }
     else
     {
         return(PositionType.Straight);
     }
 }