public static void HandPotential(string pockethand, string boardhand, out double ppot, out double npot, int NOpponents, double duration)
{
const int ahead = 2;
const int tied = 1;
const int behind = 0;
ulong board = ParseHand(boardhand);
ulong[] list = PocketHands.Query(pockethand);
#if DEBUG
if (BitCount(board) != 3 && BitCount(board) != 4)
throw new ArgumentException("board must contain only 3 or 4 cards");
#endif
ppot = npot = 0.0;
int[,] HP = new int[3, 3];
int count = 0;
int ncards = BitCount(board)+2;
uint ourbest;
Random rand = new Random();
double start = CurrentTime;
switch (NOpponents)
{
case 1:
while ((CurrentTime - start) < duration)
{
ulong pocket = RandomHand(rand, list, board, 2);
uint ourrank = Evaluate(pocket | board);
ulong opp1Pocket = Hand.RandomHand(rand, 0UL, pocket | board, 2);
uint opp1rank = Evaluate(opp1Pocket | board, ncards);
int index;
if (ourrank > opp1rank)
{
index = ahead;
}
else if (ourrank >= opp1rank)
{
index = tied;
}
else
{
index = behind;
}
ulong boardmask = Hand.RandomHand(rand, board, pocket | opp1Pocket, 5);
ourbest = Evaluate(pocket | boardmask, 7);
uint opp1best = Evaluate(opp1Pocket | boardmask, 7);
if (ourbest > opp1best)
{
HP[index, ahead]++;
//if (index == behind || index == tied)
// count++;
}
else if (ourbest >= opp1best)
{
HP[index, tied]++;
//if (index == behind || index == ahead)
// count++;
}
else
{
HP[index, behind]++;
//if (index == ahead || index == tied)
// count++;
}
count++;
}
break;
case 2:
while ((CurrentTime - start) < duration)
{
ulong pocket = RandomHand(rand, list, board, 2);
uint ourrank = Evaluate(pocket | board);
ulong opp1Pocket = Hand.RandomHand(rand, 0UL, pocket | board, 2);
ulong opp2Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket, 2);
uint opp1rank = Evaluate(opp1Pocket | board);
uint opp2rank = Evaluate(opp2Pocket | board);
int index;
if (ourrank > opp1rank && ourrank > opp2rank)
{
index = ahead;
}
else if (ourrank >= opp1rank && ourrank >= opp2rank)
{
index = tied;
}
else
{
index = behind;
}
ulong boardmask = Hand.RandomHand(rand, board, pocket | opp1Pocket | opp2Pocket, 5);
ourbest = Evaluate(pocket | boardmask, 7);
uint opp1best = Evaluate(opp1Pocket | boardmask, 7);
uint opp2best = Evaluate(opp2Pocket | boardmask, 7);
if (ourbest > opp1best && ourbest > opp2best)
{
HP[index, ahead]++;
//if (index == behind || index == tied)
// count++;
}
else if (ourbest >= opp1best && ourbest >= opp2best)
{
HP[index, tied]++;
//if (index == behind || index == ahead)
// count++;
}
else
{
HP[index, behind]++;
//if (index == ahead || index == tied)
// count++;
}
count++;
}
break;
case 3:
while ((CurrentTime - start) < duration)
{
ulong pocket = RandomHand(rand, list, board, 2);
uint ourrank = Evaluate(pocket | board);
ulong opp1Pocket = Hand.RandomHand(rand, 0UL, pocket | board, 2);
ulong opp2Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket, 2);
ulong opp3Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket, 2);
uint opp1rank = Evaluate(opp1Pocket | board);
uint opp2rank = Evaluate(opp2Pocket | board);
uint opp3rank = Evaluate(opp3Pocket | board);
int index;
if (ourrank > opp1rank && ourrank > opp2rank &&
ourrank > opp3rank)
{
index = ahead;
}
else if (ourrank >= opp1rank && ourrank >= opp2rank &&
ourrank >= opp3rank)
{
index = tied;
}
else
{
index = behind;
}
ulong boardmask = Hand.RandomHand(rand, board, pocket | opp1Pocket | opp2Pocket | opp3Pocket, 5);
ourbest = Evaluate(pocket | boardmask, 7);
uint opp1best = Evaluate(opp1Pocket | boardmask, 7);
uint opp2best = Evaluate(opp2Pocket | boardmask, 7);
uint opp3best = Evaluate(opp3Pocket | boardmask, 7);
if (ourbest > opp1best && ourbest > opp2best &&
ourbest > opp3best)
{
HP[index, ahead]++;
//if (index == behind || index == tied)
// count++;
}
else if (ourbest >= opp1best && ourbest >= opp2best &&
ourbest >= opp3best)
{
HP[index, tied]++;
//if (index == behind || index == ahead)
// count++;
}
else
{
HP[index, behind]++;
//if (index == ahead || index == tied)
// count++;
}
count++;
}
break;
case 4:
while ((CurrentTime - start) < duration)
{
ulong pocket = RandomHand(rand, list, board, 2);
uint ourrank = Evaluate(pocket | board);
ulong opp1Pocket = Hand.RandomHand(rand, 0UL, pocket | board, 2);
ulong opp2Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket, 2);
ulong opp3Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket, 2);
ulong opp4Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket, 2);
uint opp1rank = Evaluate(opp1Pocket | board);
uint opp2rank = Evaluate(opp2Pocket | board);
uint opp3rank = Evaluate(opp3Pocket | board);
uint opp4rank = Evaluate(opp4Pocket | board);
int index;
if (ourrank > opp1rank && ourrank > opp2rank &&
ourrank > opp3rank && ourrank > opp4rank)
{
index = ahead;
}
else if (ourrank >= opp1rank && ourrank >= opp2rank &&
ourrank >= opp3rank && ourrank >= opp4rank)
{
index = tied;
}
else
{
index = behind;
}
ulong boardmask = Hand.RandomHand(rand, board, pocket | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket, 5);
ourbest = Evaluate(pocket | boardmask, 7);
uint opp1best = Evaluate(opp1Pocket | boardmask, 7);
uint opp2best = Evaluate(opp2Pocket | boardmask, 7);
uint opp3best = Evaluate(opp3Pocket | boardmask, 7);
uint opp4best = Evaluate(opp4Pocket | boardmask, 7);
if (ourbest > opp1best && ourbest > opp2best &&
ourbest > opp3best && ourbest > opp4best)
{
HP[index, ahead]++;
//if (index == behind || index == tied)
// count++;
}
else if (ourbest >= opp1best && ourbest >= opp2best &&
ourbest >= opp3best && ourbest >= opp4best)
{
HP[index, tied]++;
//if (index == behind || index == ahead)
// count++;
}
else
{
HP[index, behind]++;
//if (index == ahead || index == tied)
// count++;
}
count++;
}
break;
case 5:
while ((CurrentTime - start) < duration)
{
ulong pocket = RandomHand(rand, list, board, 2);
uint ourrank = Evaluate(pocket | board);
ulong opp1Pocket = Hand.RandomHand(rand, 0UL, pocket | board, 2);
ulong opp2Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket, 2);
ulong opp3Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket, 2);
ulong opp4Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket, 2);
ulong opp5Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket, 2);
uint opp1rank = Evaluate(opp1Pocket | board);
uint opp2rank = Evaluate(opp2Pocket | board);
uint opp3rank = Evaluate(opp3Pocket | board);
uint opp4rank = Evaluate(opp4Pocket | board);
uint opp5rank = Evaluate(opp5Pocket | board);
int index;
if (ourrank > opp1rank && ourrank > opp2rank &&
ourrank > opp3rank && ourrank > opp4rank &&
ourrank > opp5rank)
{
index = ahead;
}
else if (ourrank >= opp1rank && ourrank >= opp2rank &&
ourrank >= opp3rank && ourrank >= opp4rank &&
ourrank >= opp5rank)
{
index = tied;
}
else
{
index = behind;
}
ulong boardmask = Hand.RandomHand(rand, board, pocket | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket, 5);
ourbest = Evaluate(pocket | boardmask, 7);
uint opp1best = Evaluate(opp1Pocket | boardmask, 7);
uint opp2best = Evaluate(opp2Pocket | boardmask, 7);
uint opp3best = Evaluate(opp3Pocket | boardmask, 7);
uint opp4best = Evaluate(opp4Pocket | boardmask, 7);
uint opp5best = Evaluate(opp5Pocket | boardmask, 7);
if (ourbest > opp1best && ourbest > opp2best &&
ourbest > opp3best && ourbest > opp4best &&
ourbest > opp5best)
{
HP[index, ahead]++;
//if (index == behind || index == tied)
// count++;
}
else if (ourbest >= opp1best && ourbest >= opp2best &&
ourbest >= opp3best && ourbest >= opp4best &&
ourbest >= opp5best)
{
HP[index, tied]++;
//if (index == behind || index == ahead)
// count++;
}
else
{
HP[index, behind]++;
//if (index == ahead || index == tied)
// count++;
}
count++;
}
break;
case 6:
while ((CurrentTime - start) < duration)
{
ulong pocket = RandomHand(rand, list, board, 2);
uint ourrank = Evaluate(pocket | board);
ulong opp1Pocket = Hand.RandomHand(rand, 0UL, pocket | board, 2);
ulong opp2Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket, 2);
ulong opp3Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket, 2);
ulong opp4Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket, 2);
ulong opp5Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket, 2);
ulong opp6Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket, 2);
uint opp1rank = Evaluate(opp1Pocket | board);
uint opp2rank = Evaluate(opp2Pocket | board);
uint opp3rank = Evaluate(opp3Pocket | board);
uint opp4rank = Evaluate(opp4Pocket | board);
uint opp5rank = Evaluate(opp5Pocket | board);
uint opp6rank = Evaluate(opp6Pocket | board);
int index;
if (ourrank > opp1rank && ourrank > opp2rank &&
ourrank > opp3rank && ourrank > opp4rank &&
ourrank > opp5rank && ourrank > opp6rank)
{
index = ahead;
}
else if (ourrank >= opp1rank && ourrank >= opp2rank &&
ourrank >= opp3rank && ourrank >= opp4rank &&
ourrank >= opp5rank && ourrank >= opp6rank)
{
index = tied;
}
else
{
index = behind;
}
ulong boardmask = Hand.RandomHand(rand, board, pocket | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket | opp6Pocket, 5);
ourbest = Evaluate(pocket | boardmask, 7);
uint opp1best = Evaluate(opp1Pocket | boardmask, 7);
uint opp2best = Evaluate(opp2Pocket | boardmask, 7);
uint opp3best = Evaluate(opp3Pocket | boardmask, 7);
uint opp4best = Evaluate(opp4Pocket | boardmask, 7);
uint opp5best = Evaluate(opp5Pocket | boardmask, 7);
uint opp6best = Evaluate(opp6Pocket | boardmask, 7);
if (ourbest > opp1best && ourbest > opp2best &&
ourbest > opp3best && ourbest > opp4best &&
ourbest > opp5best && ourbest > opp6best)
{
HP[index, ahead]++;
//if (index == behind || index == tied)
// count++;
}
else if (ourbest >= opp1best && ourbest >= opp2best &&
ourbest >= opp3best && ourbest >= opp4best &&
ourbest >= opp5best && ourbest >= opp6best)
{
HP[index, tied]++;
//if (index == behind || index == ahead)
// count++;
}
else
{
HP[index, behind]++;
//if (index == ahead || index == tied)
// count++;
}
count++;
}
break;
case 7:
while ((CurrentTime - start) < duration)
{
ulong pocket = RandomHand(rand, list, board, 2);
uint ourrank = Evaluate(pocket | board);
ulong opp1Pocket = Hand.RandomHand(rand, 0UL, pocket | board, 2);
ulong opp2Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket, 2);
ulong opp3Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket, 2);
ulong opp4Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket, 2);
ulong opp5Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket, 2);
ulong opp6Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket, 2);
ulong opp7Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket | opp6Pocket, 2);
uint opp1rank = Evaluate(opp1Pocket | board);
uint opp2rank = Evaluate(opp2Pocket | board);
uint opp3rank = Evaluate(opp3Pocket | board);
uint opp4rank = Evaluate(opp4Pocket | board);
uint opp5rank = Evaluate(opp5Pocket | board);
uint opp6rank = Evaluate(opp6Pocket | board);
uint opp7rank = Evaluate(opp7Pocket | board);
int index;
if (ourrank > opp1rank && ourrank > opp2rank &&
ourrank > opp3rank && ourrank > opp4rank &&
ourrank > opp5rank && ourrank > opp6rank &&
ourrank > opp7rank)
{
index = ahead;
}
else if (ourrank >= opp1rank && ourrank >= opp2rank &&
ourrank >= opp3rank && ourrank >= opp4rank &&
ourrank >= opp5rank && ourrank >= opp6rank &&
ourrank >= opp7rank)
{
index = tied;
}
else
{
index = behind;
}
ulong boardmask = Hand.RandomHand(rand, board, pocket | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket | opp6Pocket | opp7Pocket, 5);
ourbest = Evaluate(pocket | boardmask, 7);
uint opp1best = Evaluate(opp1Pocket | boardmask, 7);
uint opp2best = Evaluate(opp2Pocket | boardmask, 7);
uint opp3best = Evaluate(opp3Pocket | boardmask, 7);
uint opp4best = Evaluate(opp4Pocket | boardmask, 7);
uint opp5best = Evaluate(opp5Pocket | boardmask, 7);
uint opp6best = Evaluate(opp6Pocket | boardmask, 7);
uint opp7best = Evaluate(opp7Pocket | boardmask, 7);
if (ourbest > opp1best && ourbest > opp2best &&
ourbest > opp3best && ourbest > opp4best &&
ourbest > opp5best && ourbest > opp6best &&
ourbest > opp7best)
{
HP[index, ahead]++;
//if (index == behind || index == tied)
// count++;
}
else if (ourbest >= opp1best && ourbest >= opp2best &&
ourbest >= opp3best && ourbest >= opp4best &&
ourbest >= opp5best && ourbest >= opp6best &&
ourbest >= opp7best)
{
HP[index, tied]++;
//if (index == behind || index == ahead)
// count++;
}
else
{
HP[index, behind]++;
//if (index == ahead || index == tied)
// count++;
}
count++;
}
break;
case 8:
while ((CurrentTime - start) < duration)
{
ulong pocket = RandomHand(rand, list, board, 2);
uint ourrank = Evaluate(pocket | board);
ulong opp1Pocket = Hand.RandomHand(rand, 0UL, pocket | board, 2);
ulong opp2Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket, 2);
ulong opp3Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket, 2);
ulong opp4Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket, 2);
ulong opp5Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket, 2);
ulong opp6Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket, 2);
ulong opp7Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket | opp6Pocket, 2);
ulong opp8Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket | opp6Pocket | opp7Pocket, 2);
uint opp1rank = Evaluate(opp1Pocket | board);
uint opp2rank = Evaluate(opp2Pocket | board);
uint opp3rank = Evaluate(opp3Pocket | board);
uint opp4rank = Evaluate(opp4Pocket | board);
uint opp5rank = Evaluate(opp5Pocket | board);
uint opp6rank = Evaluate(opp6Pocket | board);
uint opp7rank = Evaluate(opp7Pocket | board);
uint opp8rank = Evaluate(opp8Pocket | board);
int index;
if (ourrank > opp1rank && ourrank > opp2rank &&
ourrank > opp3rank && ourrank > opp4rank &&
ourrank > opp5rank && ourrank > opp6rank &&
ourrank > opp7rank && ourrank > opp8rank)
{
index = ahead;
}
else if (ourrank >= opp1rank && ourrank >= opp2rank &&
ourrank >= opp3rank && ourrank >= opp4rank &&
ourrank >= opp5rank && ourrank >= opp6rank &&
ourrank >= opp7rank && ourrank >= opp8rank)
{
index = tied;
}
else
{
index = behind;
}
ulong boardmask = Hand.RandomHand(rand, board, pocket | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket | opp6Pocket | opp7Pocket | opp8Pocket, 5);
ourbest = Evaluate(pocket | boardmask, 7);
uint opp1best = Evaluate(opp1Pocket | boardmask, 7);
uint opp2best = Evaluate(opp2Pocket | boardmask, 7);
uint opp3best = Evaluate(opp3Pocket | boardmask, 7);
uint opp4best = Evaluate(opp4Pocket | boardmask, 7);
uint opp5best = Evaluate(opp5Pocket | boardmask, 7);
uint opp6best = Evaluate(opp6Pocket | boardmask, 7);
uint opp7best = Evaluate(opp7Pocket | boardmask, 7);
uint opp8best = Evaluate(opp8Pocket | boardmask, 7);
if (ourbest > opp1best && ourbest > opp2best &&
ourbest > opp3best && ourbest > opp4best &&
ourbest > opp5best && ourbest > opp6best &&
ourbest > opp7best && ourbest > opp8best)
{
HP[index, ahead]++;
//if (index == behind || index == tied)
// count++;
}
else if (ourbest >= opp1best && ourbest >= opp2best &&
ourbest >= opp3best && ourbest >= opp4best &&
ourbest >= opp5best && ourbest >= opp6best &&
ourbest >= opp7best && ourbest >= opp8best)
{
HP[index, tied]++;
//if (index == behind || index == ahead)
// count++;
}
else
{
HP[index, behind]++;
//if (index == ahead || index == tied)
// count++;
}
count++;
}
break;
case 9:
while ((CurrentTime - start) < duration)
{
ulong pocket = RandomHand(rand, list, board, 2);
uint ourrank = Evaluate(pocket | board);
ulong opp1Pocket = Hand.RandomHand(rand, 0UL, pocket | board, 2);
ulong opp2Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket, 2);
ulong opp3Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket, 2);
ulong opp4Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket, 2);
ulong opp5Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket, 2);
ulong opp6Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket, 2);
ulong opp7Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket | opp6Pocket, 2);
ulong opp8Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket | opp6Pocket | opp7Pocket, 2);
ulong opp9Pocket = Hand.RandomHand(rand, 0UL, pocket | board | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket | opp6Pocket | opp7Pocket | opp8Pocket, 2);
uint opp1rank = Evaluate(opp1Pocket | board);
uint opp2rank = Evaluate(opp2Pocket | board);
uint opp3rank = Evaluate(opp3Pocket | board);
uint opp4rank = Evaluate(opp4Pocket | board);
uint opp5rank = Evaluate(opp5Pocket | board);
uint opp6rank = Evaluate(opp6Pocket | board);
uint opp7rank = Evaluate(opp7Pocket | board);
uint opp8rank = Evaluate(opp8Pocket | board);
uint opp9rank = Evaluate(opp9Pocket | board);
int index;
if (ourrank > opp1rank && ourrank > opp2rank &&
ourrank > opp3rank && ourrank > opp4rank &&
ourrank > opp5rank && ourrank > opp6rank &&
ourrank > opp7rank && ourrank > opp8rank &&
ourrank > opp9rank)
{
index = ahead;
}
else if (ourrank >= opp1rank && ourrank >= opp2rank &&
ourrank >= opp3rank && ourrank >= opp4rank &&
ourrank >= opp5rank && ourrank >= opp6rank &&
ourrank >= opp7rank && ourrank >= opp8rank &&
ourrank >= opp9rank)
{
index = tied;
}
else
{
index = behind;
}
ulong boardmask = Hand.RandomHand(rand, board, pocket | opp1Pocket | opp2Pocket | opp3Pocket | opp4Pocket | opp5Pocket | opp6Pocket | opp7Pocket | opp8Pocket | opp9Pocket, 5);
ourbest = Evaluate(pocket | boardmask, 7);
uint opp1best = Evaluate(opp1Pocket | boardmask, 7);
uint opp2best = Evaluate(opp2Pocket | boardmask, 7);
uint opp3best = Evaluate(opp3Pocket | boardmask, 7);
uint opp4best = Evaluate(opp4Pocket | boardmask, 7);
uint opp5best = Evaluate(opp5Pocket | boardmask, 7);
uint opp6best = Evaluate(opp6Pocket | boardmask, 7);
uint opp7best = Evaluate(opp7Pocket | boardmask, 7);
uint opp8best = Evaluate(opp8Pocket | boardmask, 7);
uint opp9best = Evaluate(opp9Pocket | boardmask, 7);
if (ourbest > opp1best && ourbest > opp2best &&
ourbest > opp3best && ourbest > opp4best &&
ourbest > opp5best && ourbest > opp6best &&
ourbest > opp7best && ourbest > opp8best &&
ourbest > opp9best)
{
HP[index, ahead]++;
//if (index == behind || index == tied)
// count++;
}
else if (ourbest >= opp1best && ourbest >= opp2best &&
ourbest >= opp3best && ourbest >= opp4best &&
ourbest >= opp5best && ourbest >= opp6best &&
ourbest >= opp7best && ourbest >= opp8best &&
ourbest >= opp9best)
{
HP[index, tied]++;
//if (index == behind || index == ahead)
// count++;
}
else
{
HP[index, behind]++;
//if (index == ahead || index == tied)
// count++;
}
count++;
}
break;
}
if (count != 0)
{
ppot = (HP[behind, ahead] + (HP[behind, tied] / 2.0) + (HP[tied, ahead] / 2.0)) / ((double)count);
npot = (HP[ahead, behind] + (HP[ahead, tied] / 2.0) + (HP[tied, behind] / 2.0)) / ((double)count);
}
}