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]); } } }
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)); } } } } }