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