private List <Exam_Mod> Exam_Analyze(int[,] redBall, int[,] miniRedBall, ArrayList arrRound) { //sum two prime near repeat //平均命中率 //NormalDistribution nn = new NormalDistribution(); int[] countSum30 = new int[20]; List <Exam_Mod> exModList = new List <Exam_Mod>(); for (int i = arrRound.Count - 2; i >= 1; i--) { Exam_Mod exMod = new Exam_Mod(); exMod.Round = arrRound[i].ToString(); int sum = miniRedBall[0, i] + miniRedBall[1, i] + miniRedBall[2, i] + miniRedBall[3, i] + miniRedBall[4, i] + miniRedBall[5, i]; int isPrime = MyTest.ISPrime(miniRedBall[0, i]) + MyTest.ISPrime(miniRedBall[1, i]) + MyTest.ISPrime(miniRedBall[2, i]) + MyTest.ISPrime(miniRedBall[3, i]) + MyTest.ISPrime(miniRedBall[4, i]) + MyTest.ISPrime(miniRedBall[5, i]); int isTwo = MyTest.ISTwo(miniRedBall[0, i]) + MyTest.ISTwo(miniRedBall[1, i]) + MyTest.ISTwo(miniRedBall[2, i]) + MyTest.ISTwo(miniRedBall[3, i]) + MyTest.ISTwo(miniRedBall[4, i]) + MyTest.ISTwo(miniRedBall[5, i]); int near = MyTest.ISNear(redBall, miniRedBall[0, i], i + 1) + MyTest.ISNear(redBall, miniRedBall[1, i], i + 1) + MyTest.ISNear(redBall, miniRedBall[2, i], i + 1) + MyTest.ISNear(redBall, miniRedBall[3, i], i + 1) + MyTest.ISNear(redBall, miniRedBall[4, i], i + 1) + MyTest.ISNear(redBall, miniRedBall[5, i], i + 1); int repeat = MyTest.ISRepeat(redBall, miniRedBall[0, i], i + 1) + MyTest.ISRepeat(redBall, miniRedBall[1, i], i + 1) + MyTest.ISRepeat(redBall, miniRedBall[2, i], i + 1) + MyTest.ISRepeat(redBall, miniRedBall[3, i], i + 1) + MyTest.ISRepeat(redBall, miniRedBall[4, i], i + 1) + MyTest.ISRepeat(redBall, miniRedBall[5, i], i + 1); exMod.A0 = sum; exMod.A1 = repeat; exMod.A2 = near; exMod.A3 = near + repeat; exMod.A4 = isPrime; exMod.A5 = isTwo; exMod.A6 = miniRedBall[5, i] - miniRedBall[0, i]; exMod.A7 = MyTest.FindUpNumber(i, miniRedBall[0, i] - 1, arrRound.Count - 1, redBall) + MyTest.FindUpNumber(i, miniRedBall[1, i] - 1, arrRound.Count - 1, redBall) + MyTest.FindUpNumber(i, miniRedBall[2, i] - 1, arrRound.Count - 1, redBall) + MyTest.FindUpNumber(i, miniRedBall[3, i] - 1, arrRound.Count - 1, redBall) + MyTest.FindUpNumber(i, miniRedBall[4, i] - 1, arrRound.Count - 1, redBall) + MyTest.FindUpNumber(i, miniRedBall[5, i] - 1, arrRound.Count - 1, redBall); exMod.A8 = near + repeat + isPrime + isTwo; exMod.B12 = miniRedBall[0, i] + "|" + miniRedBall[1, i] + "|" + miniRedBall[2, i] + "|" + miniRedBall[3, i] + "|" + miniRedBall[4, i] + "|" + miniRedBall[5, i]; exMod.B13 = repeat + "|" + near + "|" + isPrime + "|" + isTwo; string hope = MyTest.Belong(miniRedBall, i, 1); exMod.B14 = hope.Split('_')[0]; exMod.B15 = hope.Split('_')[1]; hope = MyTest.Belong(miniRedBall, i, 2); exMod.B16 = hope.Split('_')[0]; exMod.B17 = hope.Split('_')[1]; hope = MyTest.Belong(miniRedBall, i, 3); exMod.B18 = hope.Split('_')[0]; exMod.B19 = hope.Split('_')[1]; int sum30 = 0; int[] miniSum30 = new int[6]; int min30 = 0; int max30 = 0; if (i + 30 <= arrRound.Count - 1) { for (int x = 0; x < 6; x++) { for (int j = 0; j < 30; j++) { sum30 += redBall[miniRedBall[x, i] - 1, i + j + 1]; miniSum30[x] += redBall[miniRedBall[x, i] - 1, i + j + 1]; } if (min30 == 0) { min30 = miniSum30[x]; } if (min30 > miniSum30[x]) { min30 = miniSum30[x]; } if (max30 < miniSum30[x]) { max30 = miniSum30[x]; } //newRow["a2" + x.ToString()] = miniSum30[x]; countSum30[miniSum30[x]]++; } string strC = ""; for (int x = 0; x < 6; x++) { if (miniSum30[x] >= 9) { exMod.B26 = "A" + exMod.B26; } else if (miniSum30[x] >= 3) { exMod.B26 += "B"; } else { strC += "C"; } } exMod.B26 += strC; } exMod.B27 = NewNumber.GetTwoNearRepeatRound(redBall, miniRedBall[0, i], miniRedBall[1, i], miniRedBall[2, i], miniRedBall[3, i], miniRedBall[4, i], miniRedBall[5, i], i); int[] sub = new int[7]; sub[0] = miniRedBall[0, i]; sub[1] = miniRedBall[1, i] - miniRedBall[0, i] - 1; sub[2] = miniRedBall[2, i] - miniRedBall[1, i] - 1; sub[3] = miniRedBall[3, i] - miniRedBall[2, i] - 1; sub[4] = miniRedBall[4, i] - miniRedBall[3, i] - 1; sub[5] = miniRedBall[5, i] - miniRedBall[4, i] - 1; sub[6] = 34 - miniRedBall[5, i]; // string strSub = sub[0].ToString() + "-" + sub[1].ToString() + "-" + sub[2].ToString() + "-" + sub[3].ToString() + "-" + sub[4].ToString() + "-" + sub[5].ToString();// +"-" + sub[6].ToString();//无用 string strSubSub = MyTest.GetSubStr(sub); exMod.B28 = strSubSub; ArrayList al = new ArrayList(); al.Add(MyTest.FindUpNumber(i, miniRedBall[0, i] - 1, arrRound.Count - 1, redBall)); al.Add(MyTest.FindUpNumber(i, miniRedBall[1, i] - 1, arrRound.Count - 1, redBall)); al.Add(MyTest.FindUpNumber(i, miniRedBall[2, i] - 1, arrRound.Count - 1, redBall)); al.Add(MyTest.FindUpNumber(i, miniRedBall[3, i] - 1, arrRound.Count - 1, redBall)); al.Add(MyTest.FindUpNumber(i, miniRedBall[4, i] - 1, arrRound.Count - 1, redBall)); al.Add(MyTest.FindUpNumber(i, miniRedBall[5, i] - 1, arrRound.Count - 1, redBall)); exMod.B29 = al[0].ToString() + "|" + al[1].ToString() + "|" + al[2].ToString() + "|" + al[3].ToString() + "|" + al[4].ToString() + "|" + al[5].ToString(); al.Sort(); exMod.A9 = sum30; exMod.A10 = int.Parse(al[0].ToString()); exMod.A11 = int.Parse(al[5].ToString()); //for (int j = 0; j < al.Count; j++) //{ // newRow["a12"] += int.Parse(al[j].ToString()).ToString("00") + " "; //} exMod.Flag = Define._AnalyzeFlag;//999999 //Exam_Bll.InsertExamMod(exMod); exModList.Add(exMod); //_DT.Rows.Add(newRow); //newRow = _DT.NewRow(); //newRow["round"] = arrRound[i].ToString(); //int[] lastNum = new int[10]; //int oneNumSum = 0; //int lastNumSum = 0; //int mathSum = 0; //string strOne = ""; //int max = miniRedBall[0, i]; //int maxBegin = 0; //int maxEnd = miniRedBall[0, i]; //if (miniRedBall[1, i] - miniRedBall[0, i] > max) //{ // max = miniRedBall[1, i] - miniRedBall[0, i]; // maxBegin = miniRedBall[0, i]; // maxEnd = miniRedBall[1, i]; //} //if (miniRedBall[2, i] - miniRedBall[1, i] > max) //{ // max = miniRedBall[2, i] - miniRedBall[1, i]; // maxBegin = miniRedBall[1, i]; // maxEnd = miniRedBall[2, i]; //} //if (miniRedBall[3, i] - miniRedBall[2, i] > max) //{ // max = miniRedBall[3, i] - miniRedBall[2, i]; // maxBegin = miniRedBall[2, i]; // maxEnd = miniRedBall[3, i]; //} //if (miniRedBall[4, i] - miniRedBall[3, i] > max) //{ // max = miniRedBall[4, i] - miniRedBall[3, i]; // maxBegin = miniRedBall[3, i]; // maxEnd = miniRedBall[4, i]; //} //if (miniRedBall[5, i] - miniRedBall[4, i] > max) //{ // max = miniRedBall[5, i] - miniRedBall[4, i]; // maxBegin = miniRedBall[4, i]; // maxEnd = miniRedBall[5, i]; //} //if (34 - miniRedBall[5, i] > max) //{ // max = 34 - miniRedBall[5, i]; // maxBegin = miniRedBall[5, i]; // maxEnd = 34; //} //newRow["a12"] = max.ToString("00"); //newRow["a13"] = maxBegin; //newRow["a14"] = maxEnd; //newRow["a15"] = miniRedBall[0, i]; //newRow["a16"] = miniRedBall[5, i]; //List<double> dd = new List<double>(); //dd.Add(Convert.ToDouble(miniRedBall[0, i])); //dd.Add(Convert.ToDouble(miniRedBall[1, i])); //dd.Add(Convert.ToDouble(miniRedBall[2, i])); //dd.Add(Convert.ToDouble(miniRedBall[3, i])); //dd.Add(Convert.ToDouble(miniRedBall[4, i])); //dd.Add(Convert.ToDouble(miniRedBall[5, i])); //double ddd = nn.stdev(dd); //double aaa = nn.average(dd); //newRow["a20"] = ddd.ToString("0.0"); //newRow["a21"] = aaa.ToString("0.0"); //dd = new List<double>(); //dd.Add(Convert.ToDouble(miniRedBall[0, i])); //dd.Add(Convert.ToDouble(miniRedBall[1, i] - miniRedBall[0, i])); //dd.Add(Convert.ToDouble(miniRedBall[2, i] - miniRedBall[1, i])); //dd.Add(Convert.ToDouble(miniRedBall[3, i] - miniRedBall[2, i])); //dd.Add(Convert.ToDouble(miniRedBall[4, i] - miniRedBall[3, i])); //dd.Add(Convert.ToDouble(miniRedBall[5, i] - miniRedBall[4, i])); //dd.Add(Convert.ToDouble(33 - miniRedBall[5, i])); //ddd = nn.stdev(dd); //aaa = nn.average(dd); //newRow["a22"] = ddd.ToString("0.0"); //al = new ArrayList(); //al.Add(miniRedBall[0, i]); //al.Add(miniRedBall[1, i] - miniRedBall[0, i]); //al.Add(miniRedBall[2, i] - miniRedBall[1, i]); //al.Add(miniRedBall[3, i] - miniRedBall[2, i]); //al.Add(miniRedBall[4, i] - miniRedBall[3, i]); //al.Add(miniRedBall[5, i] - miniRedBall[4, i]); //al.Add(33-miniRedBall[5, i]); //for (int x = 0; x < al.Count; x++) //{ // newRow["a17"] += al[x].ToString() + "|"; //} //al.Sort(); //for (int x = 0; x < al.Count; x++) //{ // newRow["a18"] = al[x].ToString() + "|" + newRow["a18"]; //} //for (int x = 0; x < 6; x++) //{ // mathSum += Math.Abs(miniRedBall[x, i] - miniRedBall[x, i + 1]); // newRow["a" + x.ToString()] = Math.Abs(miniRedBall[x, i] - miniRedBall[x, i + 1]); // if (miniRedBall[x, i] < 10) // { // newRow["a23"] += miniRedBall[x, i].ToString("00") + "|"; // strOne += "0"; // lastNumSum += miniRedBall[x, i]; // //newRow["a2" + x.ToString()] = miniRedBall[x, i]; // lastNum[miniRedBall[x, i]]++; // } // else // { // if (miniRedBall[x, i] < 20) // { // newRow["a24"] += miniRedBall[x, i].ToString("00") + "|"; // } // else if (miniRedBall[x, i] < 30) // { // newRow["a25"] += miniRedBall[x, i].ToString("00") + "|"; // } // string begin = miniRedBall[x, i].ToString().Substring(0, 1); // strOne += begin; // oneNumSum += int.Parse(begin); // string end = miniRedBall[x, i].ToString().Substring(1, 1); // //newRow["a2" + x.ToString()] = end; // lastNumSum += int.Parse(end); // lastNum[int.Parse(end)]++; // } //} //newRow["a6"] = mathSum; //newRow["a10"] = min30; //newRow["a11"] = max30; //newRow["a27"] = lastNumSum; //newRow["a28"] = strOne; //newRow["a29"] = oneNumSum; //newRow["a19"] = sum; //newRow["a30"] = miniRedBall[0, i] + "|" + miniRedBall[1, i] + "|" + miniRedBall[2, i] + "|" + miniRedBall[3, i] + "|" + miniRedBall[4, i] + "|" + miniRedBall[5, i]; //for (int x = 0; x < 10; x++) //{ // if (lastNum[x] != 0) // for (int y = 0; y < lastNum[x]; y++) // { // newRow["a26"] += x.ToString(); // } //} //newRow["FLAG"] = Define._AnalyzeTwoFlag;//99999900 //_DT.Rows.Add(newRow); } return(exModList); }
//private static bool FindFromArrayList(string[] str, ArrayList al) //{ // bool find = true; // for (int i = 0; i < al.Count; i++ ) // { // int count = 0; // for (int j = 0; j < str.Length; j++) // { // if (!al[i].ToString().Contains(str[j])) // { // find = false; break; // } // else // count++; // } // if (count == 4) // { // find = true; // break; // } // } // if (al.Count == 0) // find = false; // return find; //} public static ArrayList MyFourToSix(string[] inputAll, int max, ref DataTable dt, int[,] redBall, string six) { DataRow newRow; ArrayList al = new ArrayList(); string[] input = new string[inputAll.Length]; int[] num = new int[inputAll.Length]; for (int i = 0; i < input.Length; i++) { string[] str = inputAll[i].Split('#'); num[i] = int.Parse(str[0]); input[i] = str[1]; } for (int i = 0; i < input.Length; i++) { if (input[i] != "") { string[] strI = input[i].Split('|'); //if (FindFromArrayList(strI, al)) //{ // input[i] = ""; //} //else //{ //bool select = false; for (int j = i + 1; j < input.Length; j++) { if (input[j] != "") { string[] strJ = input[j].Split('|'); //if (FindFromArrayList(strJ, al)) //{ // input[j] = ""; //} //else //{ int count = 0; for (int x = 0; x < strI.Length; x++) { if (input[j].Contains(strI[x])) { count++; } if (count > 2) { break; } } if (count == 2) { //string[] str = al[i].ToString().Split('_'); string[] str0 = input[i].Split('|'); string[] str1 = input[j].Split('|'); ArrayList alNew = new ArrayList(); for (int x = 0; x < str0.Length; x++) { if (!alNew.Contains(str0[x])) { alNew.Add(str0[x]); } if (!alNew.Contains(str1[x])) { alNew.Add(str1[x]); } } int countAl = 0; for (int x = 0; x < al.Count; x++) { countAl = 0; for (int y = 0; y < alNew.Count; y++) { if (al[x].ToString().Split('%')[0].Contains(alNew[y].ToString())) { countAl++; } if (countAl > 3) { break; } } if (countAl > 3) { break; } } if (countAl <= 3) { alNew.Sort(); string strSix = ""; for (int x = 0; x < alNew.Count; x++) { if (x == alNew.Count - 1) { strSix += alNew[x].ToString(); } else { strSix += alNew[x].ToString() + "|"; } } //al[i] = al[i].ToString() ; if (six.Contains(strSix)) { string[] str6 = strSix.Split('|'); int a1 = int.Parse(str6[0]); int a2 = int.Parse(str6[1]); int a3 = int.Parse(str6[2]); int a4 = int.Parse(str6[3]); int a5 = int.Parse(str6[4]); int a6 = int.Parse(str6[5]); //if ((a2 - a1 == 1 || a3 - a2 == 1 || a4 - a3 == 1 || a5 - a4 == 1 || a6 - a5 == 1) && (ISRepeat(redBall, a1, 1) == 1 || ISRepeat(redBall, a2, 1) == 1 || ISRepeat(redBall, a3, 1) == 1 || ISRepeat(redBall, a4, 1) == 1 || ISRepeat(redBall, a5, 1) == 1 || ISRepeat(redBall, a6, 1) == 1)) if ((a2 - a1 == 1 || a3 - a2 == 1 || a4 - a3 == 1 || a5 - a4 == 1 || a6 - a5 == 1) || (ISRepeat(redBall, a1, 1) == 1 || ISRepeat(redBall, a2, 1) == 1 || ISRepeat(redBall, a3, 1) == 1 || ISRepeat(redBall, a4, 1) == 1 || ISRepeat(redBall, a5, 1) == 1 || ISRepeat(redBall, a6, 1) == 1)) { al.Add(input[i] + "_" + input[j] + "=" + strSix + "%" + (num[i] + num[j]).ToString()); newRow = dt.NewRow(); newRow["FLAG"] = 778877; newRow["A1"] = num[i] + num[j]; newRow["A12"] = strSix; newRow["A15"] = NewNumber.GetTwoNearRepeatRound(redBall, a1, a2, a3, a4, a5, a6, 0); newRow["A13"] = a1 + a2 + a3 + a4 + a5 + a6; newRow["A14"] = a6 - a1; dt.Rows.Add(newRow); input[i] = ""; input[j] = ""; //select = true; break; } } } } } //if (!select) //{ // newRow = dt.NewRow(); // newRow["FLAG"] = 77887788; // newRow["A1"] = num[i]; // newRow["A12"] = input[i]; // dt.Rows.Add(newRow); //} } } } return(al); }