示例#1
0
    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);
    }
示例#2
0
    //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);
    }