Пример #1
0
        public void GenerateProbibility(int sampleCount, bool myMatch, bool theirsMatch)
        {
            int remainingTurns = 3 - cardsPlayed;

            for (int myScore = CardProbability.MinScore; myScore <= CardProbability.MaxScore; ++myScore)
            {
                for (int theirScore = cardsPlayed * Card.MIN_CARD_SCORE; theirScore <= cardsPlayed * Card.MAX_CARD_SCORE; ++theirScore)
                {
                    winProbability[0].SetProbability(myScore, theirScore, CardProbability.CalculateProbabilityOfWin(myScore, theirScore, cardsPlayed, myMatch, sampleCount));
                }
            }

            for (int turn = 0; turn < remainingTurns; ++turn)
            {
                int myCardsPlayed = turn + cardsPlayed;
                for (int myScore = myCardsPlayed * Card.MIN_CARD_SCORE; myScore <= myCardsPlayed * Card.MAX_CARD_SCORE; ++myScore)
                {
                    for (int theirScore = cardsPlayed * Card.MIN_CARD_SCORE; theirScore <= cardsPlayed * Card.MAX_CARD_SCORE; ++theirScore)
                    {
                        foldProbability[0, turn].SetProbability(myScore, theirScore, CardProbability.CalculateProbabilityOfFold(myCardsPlayed, myScore, myMatch, cardsPlayed, theirScore, theirsMatch, sampleCount));
                    }
                }
            }

            for (int bid = 1; bid <= CardGameLogic.MAX_BID_SCALAR; ++bid)
            {
                winProbability[bid].CopyFrom(winProbability[0]);
                for (int turn = 0; turn < remainingTurns; ++turn)
                {
                    foldProbability[bid, turn].CopyFrom(foldProbability[0, turn]);
                }
            }
        }
Пример #2
0
        public void ModifyByBid()
        {
            int remainingTurns = 3 - cardsPlayed;


            for (int bid = 2; bid <= CardGameLogic.MAX_BID_SCALAR; ++bid)
            {
                for (int myScore = CardProbability.MinScore; myScore <= CardProbability.MaxScore; ++myScore)
                {
                    for (int theirScore = cardsPlayed * Card.MIN_CARD_SCORE; theirScore <= cardsPlayed * Card.MAX_CARD_SCORE; ++theirScore)
                    {
                        float exitingProbability = winProbability[bid].GetProbability(myScore, theirScore);
                        winProbability[bid].SetProbability(myScore, theirScore, exitingProbability / bid);
                    }
                }

                for (int turn = 0; turn < remainingTurns; ++turn)
                {
                    int myCardsPlayed = turn + cardsPlayed;
                    for (int myScore = myCardsPlayed * Card.MIN_CARD_SCORE; myScore <= myCardsPlayed * Card.MAX_CARD_SCORE; ++myScore)
                    {
                        for (int theirScore = cardsPlayed * Card.MIN_CARD_SCORE; theirScore <= cardsPlayed * Card.MAX_CARD_SCORE; ++theirScore)
                        {
                            float exitingProbability = foldProbability[bid, turn].GetProbability(myScore, theirScore);
                            foldProbability[bid, turn].SetProbability(myScore, theirScore, CardProbability.MakeMoreLikely(exitingProbability, bid));
                        }
                    }
                }
            }
        }