Ejemplo n.º 1
0
        private void PairFinding()
        {
            deck = deck.Shuffle();

            int found = 0;
            for (int trial = 0; trial < TRIALS; trial++)
            {
                Card a = rand.NextCard();
                Card b = rand.NextCard();

                List<Card> list = deck.ToList();

                int id = -1;
                bool reversed = false;
                for (int i = 0; i < list.Count; i++)
                {
                    if (list[i] == a)
                    {
                        if (i > 0 && list[i - 1].Rank == b.Rank)
                        {
                            id = i - 1;
                            reversed = true;
                            break;
                        }
                        if (i < list.Count - 1 && list[i + 1].Rank == b.Rank)
                        {
                            id = i;
                            break;
                        }
                    }
                }

                if (id != -1)
                {
                    found++;
                    PrintLnF(string.Format("[TRIAL {0:0000}]: ", trial) +
                        "&a&*Sequence " + a.Rank.ToCustomString() + " && " +
                        b.Rank.ToCustomString() + " found at: &r" + id.ToString() +
                        " &9   \t" + (reversed ? b.ToCustomString() + ", " + a.ToCustomString() :
                        a.ToCustomString() + ", " + b.ToCustomString()) + "&r");
                }
                else
                {
                    PrintLnF(string.Format("[TRIAL {0:0000}]: ", trial) +
                        "&c&*Sequence " + a.Rank.ToCustomString() + " && " +
                        b.Rank.ToCustomString() + " not found.&r");
                }
            }

            PrintLnF("\r&6Results:");
            double pHat = (double)found / (double)TRIALS;
            PrintLnF("    &5p^ = " + pHat.ToString());
            double sigma = Math.Sqrt((pHat * (1 - pHat)) / (double)TRIALS);
            PrintLnF("    &eo` = " + sigma.ToString());

            double lower = pHat - (1.96 * sigma);
            double upper = pHat + (1.96 * sigma);
            PrintLnF("    &995% Confidence in [" + lower.ToString() + ", " + upper.ToString() + "]");
        }