using System; using System.Collections.Generic; using System.Linq; using CB.Common; using CB.Entity; namespace CB.TrendMiss { /// /// 遗漏项值计算 by JNswins /// public class MissItemFunction { /// /// 多开奖号码遗漏 /// /// /// 彩种开奖 /// /// /// /// /// /// [MissFunction("[多值]开奖号码(数字遗漏)项", MissItemType.MultiValue_OpenCodeItem, ChartItemClassName.MultiValue)] public static Tuple SetOpenCodeItemValue(TEntity entity, int indexStart, int indexEnd, int minNum, int maxNum, bool isFirst, int count, ref IList missData) where TEntity : LotteryOpenCode { if(entity.OpenCode.Contains(-1)) return new Tuple(false, "开奖号码错误!"); IList list = new List(entity.OpenCode); if (-1 != indexEnd) { for (int i = list.Count - 1; i >= indexEnd; i--) { list.RemoveAt(i); } } for (int i = 0; i < indexStart; i++) { list.RemoveAt(0); } int[] index = new int[count]; int j = 0; for (int i = maxNum; i >= minNum; i--) { j = i - minNum; missData[j].LocalMiss++;//当前遗漏 missData[j].RecordCount++; if (list.Contains(i)) { index[j]++; missData[j].LastMiss = missData[j].LocalMiss - 1;//上期遗漏 missData[j].LocalMiss = 0;//重置当前遗漏 missData[j].Times++;//出现次数加1 //---------以下为连出及连出遗漏--------------- missData[j].ContinuousLocalMiss++; if (missData[j].ItemSelect && 1 <= index[j]) { missData[j].ContinuousTimes++; missData[j].ContinuousLocalTimes++; missData[j].ContinuousLocalMiss = 0; //最大连出次数 if (missData[j].ContinuousLocalTimes > missData[j].ContinuousMaxTimes) { missData[j].ContinuousMaxTimes = missData[j].ContinuousLocalTimes; } } else { missData[j].ContinuousLocalTimes = 0; missData[j].ContinuousLocalMiss++; //最大连出遗漏 if (missData[j].ContinuousLocalMiss > missData[j].ContinuousMaxMiss) { missData[j].ContinuousMaxMiss = missData[j].ContinuousLocalMiss; } } } if (isFirst) missData[j].LastMiss = 0; //最大遗漏 if (missData[j].LocalMiss > missData[j].MaxMiss) { missData[j].MaxMiss = missData[j].LocalMiss; } //历史最大遗漏 if (missData[j].LastMiss > missData[j].LastMaxMiss) { missData[j].LastMaxMiss = missData[j].LastMiss; } missData[j].AvgMiss = ((double)(missData[j].RecordCount - missData[j].Times)) / (missData[j].Times + 1);//计算平均遗漏 missData[j].ItemSelect = 1 <= index[j]; } return new Tuple(true, "");; } ///// ///// 单值开奖号码遗漏 ///// ///// ///// ///// ///// ///// ///// ///// ///// ///// //public static bool SetSingleValueItem(TEntity entity, TrendMissItemInfo itemConfig, int indexStart, int indexEnd, int count, // bool isFirst, // ref IList missData) where TEntity : LotteryOpenCode //{ // IList list = new List(entity.OpenCode); // if (-1 != indexEnd) // { // for (int i = list.Count - 1; i >= indexEnd; i--) // { list.RemoveAt(i); } // } // for (int i = 0; i < indexStart; i++) // { list.RemoveAt(0); } // switch (itemConfig.FuntionType) // { // case MissItemType.SingleValue_Sum: // return SingleValue_Sum(entity, count, isFirst, ref missData, list); // case MissItemType.SingleValue_JOItem: // return SingleValue_JOItem(entity, count, isFirst, ref missData, list); // case MissItemType.SingleValue_DXItem: // return SingleValue_DXItem(entity, itemConfig, count, isFirst, ref missData, list); // case MissItemType.SingleValue_ZHItem: // return SingleValue_ZHItem(entity, count, isFirst, ref missData, list); // case MissItemType.SingleValue_KDItem: // return SingleValue_KDItem(entity, count, isFirst, ref missData, list); // case MissItemType.SingleValue_012Item: // return SingleValue_012Item(entity, count, isFirst, ref missData, list); // case MissItemType.SingleValue_HWItem: // return SingleValue_HWItem(entity, count, isFirst, ref missData, list); // } // return true; //} /// /// 单值开奖号码(和尾遗漏) /// /// /// /// /// /// /// /// [MissFunction("[单值]开奖号码(和尾遗漏)项", MissItemType.SingleValue_HWItem, ChartItemClassName.SingleValue)] public static Tuple SingleValue_HWItem(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode { if (entity.OpenCode.Contains(-1)) return new Tuple(false, "开奖号码错误!"); IList list = new List(entity.OpenCode); if (-1 != indexEnd) { for (int i = list.Count - 1; i >= indexEnd; i--) { list.RemoveAt(i); } } for (int i = 0; i < indexStart; i++) { list.RemoveAt(0); } return new Tuple(true, LotteryUtils.GetHWString(list).ToString()); } /// /// 单值开奖号码(012路遗漏) /// /// /// /// /// /// /// /// [MissFunction("[单值]开奖号码(012路遗漏)项", MissItemType.SingleValue_012Item, ChartItemClassName.SingleValue)] public static Tuple SingleValue_012Item(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode { if (entity.OpenCode.Contains(-1)) return new Tuple(false, "开奖号码错误!"); IList list = new List(entity.OpenCode); if (-1 != indexEnd) { for (int i = list.Count - 1; i >= indexEnd; i--) { list.RemoveAt(i); } } for (int i = 0; i < indexStart; i++) { list.RemoveAt(0); } return new Tuple(true, LotteryUtils.Get012String(list).ToString()); } /// /// 单值开奖号码(跨度遗漏) /// /// /// /// /// /// /// /// [MissFunction("[单值]开奖号码(跨度遗漏)项", MissItemType.SingleValue_KDItem, ChartItemClassName.SingleValue)] public static Tuple SingleValue_KDItem(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode { if (entity.OpenCode.Contains(-1)) return new Tuple(false, "开奖号码错误!"); IList list = new List(entity.OpenCode); if (-1 != indexEnd) { for (int i = list.Count - 1; i >= indexEnd; i--) { list.RemoveAt(i); } } for (int i = 0; i < indexStart; i++) { list.RemoveAt(0); } return new Tuple(true, LotteryUtils.GetSpan(list).ToString()); } /// /// 单值开奖号码(质合遗漏) /// /// /// /// /// /// /// /// [MissFunction("[单值]开奖号码(质合遗漏)项", MissItemType.SingleValue_ZHItem, ChartItemClassName.SingleValue)] public static Tuple SingleValue_ZHItem(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode { if (entity.OpenCode.Contains(-1)) return new Tuple(false, "开奖号码错误!"); IList list = new List(entity.OpenCode); if (-1 != indexEnd) { for (int i = list.Count - 1; i >= indexEnd; i--) { list.RemoveAt(i); } } for (int i = 0; i < indexStart; i++) { list.RemoveAt(0); } return new Tuple(true, LotteryUtils.GetZHString(list).ToString()); } /// /// 单值开奖号码(大小遗漏) /// /// /// /// /// /// /// /// /// [MissFunction("[单值]开奖号码(大小遗漏)项", MissItemType.SingleValue_DXItem, ChartItemClassName.SingleValue)] public static Tuple SingleValue_DXItem(TEntity entity, int indexStart, int indexEnd, int splitNumberOfDX) where TEntity : LotteryOpenCode { if (entity.OpenCode.Contains(-1)) return new Tuple(false, "开奖号码错误!"); IList list = new List(entity.OpenCode); if (-1 != indexEnd) { for (int i = list.Count - 1; i >= indexEnd; i--) { list.RemoveAt(i); } } for (int i = 0; i < indexStart; i++) { list.RemoveAt(0); } return new Tuple(true, LotteryUtils.GetDXString(list, splitNumberOfDX).ToString()); } /// /// 单值开奖号码(奇偶遗漏) /// /// /// /// /// /// /// /// [MissFunction("[单值]开奖号码(奇偶遗漏)项", MissItemType.SingleValue_JOItem, ChartItemClassName.SingleValue)] public static Tuple SingleValue_JOItem(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode { if (entity.OpenCode.Contains(-1)) return new Tuple(false, "开奖号码错误!"); IList list = new List(entity.OpenCode); if (-1 != indexEnd) { for (int i = list.Count - 1; i >= indexEnd; i--) { list.RemoveAt(i); } } for (int i = 0; i < indexStart; i++) { list.RemoveAt(0); } return new Tuple(true, LotteryUtils.GetJOString(list).ToString()); } /// /// 单值开奖号码(和值遗漏) /// /// /// /// /// /// /// /// [MissFunction("[单值]开奖号码(和值遗漏)项", MissItemType.SingleValue_Sum, ChartItemClassName.SingleValue)] public static Tuple SingleValue_Sum(TEntity entity, int indexStart, int indexEnd) where TEntity : LotteryOpenCode { if (entity.OpenCode.Contains(-1)) return new Tuple(false, "开奖号码错误!"); IList list = new List(entity.OpenCode); if (-1 != indexEnd) { for (int i = list.Count - 1; i >= indexEnd; i--) { list.RemoveAt(i); } } for (int i = 0; i < indexStart; i++) { list.RemoveAt(0); } return new Tuple(true, LotteryUtils.GetSum(list).ToString()); } ///// ///// 单值项遗漏计算通用方法 ///// ///// ///// ///// ///// ///// ///// ///// //public static bool SetSingleValue(TEntity entity, string itemValue, int count, bool isFirst, // ref IList missData) where TEntity : LotteryOpenCode //{ // int index = -1; // for (int i = 0; i < count; i++) // { // missData[i].LocalMiss++;//当前遗漏 // missData[i].RecordCount++; // if (itemValue == missData[i].ItemValue) // { // index = i; // missData[i].LastMiss = missData[i].LocalMiss;//上期遗漏 // missData[i].LocalMiss = 0;//重置当前遗漏 // missData[i].Times++;//出现次数加1 // } // if (isFirst) // missData[i].LastMiss = 0; // //最大遗漏 // if (missData[i].LocalMiss > missData[i].MaxMiss) // { missData[i].MaxMiss = missData[i].LocalMiss; } // //历史最大遗漏 // if (missData[i].LastMiss > missData[i].LastMaxMiss) // { missData[i].LastMaxMiss = missData[i].LastMiss; } // missData[i].AvgMiss = ((double)(missData[i].RecordCount - missData[i].Times)) / (missData[i].Times + 1);//计算平均遗漏 // //---------以下为连出及连出遗漏--------------- // missData[i].ContinuousLocalMiss++; // if (missData[i].ItemSelect && i == index) // { // missData[i].ContinuousTimes++; // missData[i].ContinuousLocalTimes++; // missData[i].ContinuousLocalMiss = 0; // } // //最大连出遗漏 // if (missData[i].ContinuousLocalMiss > missData[i].ContinuousMaxMiss) // { missData[i].ContinuousMaxMiss = missData[i].ContinuousLocalMiss; } // //最大连出次数 // if (missData[i].ContinuousLocalTimes > missData[i].ContinuousMaxTimes) // { missData[i].ContinuousMaxTimes = missData[i].ContinuousLocalTimes; } // missData[i].ItemSelect = i == index; // } // return true; //} } }