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); }
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); } }
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); }
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); } }