Open Side Menu Go to the Top
Register
Can you crack it - Math Cracks!? Can you crack it - Math Cracks!?

08-09-2014 , 05:23 AM


Lets assume MP3 is Hero whom plays a Tourney and his stack is coverd by villain but he desperatly needs chips.

P that Hero wins hole pot: 33,73%
P that Hero 3/4ers:
P that Hero splits the pot:
P that Villian 3/4ers:
P that Hero drops out: 37,31%

Hi guys! Do you think it is possible to come up with an algorithm of how to fill the gaps out of the given numbers???
Can you crack it - Math Cracks!? Quote
08-09-2014 , 06:14 AM
As someone who has Odds Oracle Pro, I wouldn't bother to crack it but would instead execute a PQL query like this:

Code:
select count(
riverEquity(hero)=0.75
) from game='omaha8', hero='2345',
villain='A$B,AA,KK,QQ,JJ,TT,AOP$L,A$W$W,A$W$M'
Code:
select count(
scoops(villain)
) from game='omaha8', hero='2345',
villain='A$B,AA,KK,QQ,JJ,TT,AOP$L,A$W$W,A$W$M'
(note that you have to write $ to specify the macros $B, $M, $L and $W, otherwise these letters denote just a distinct rank like the letters O and P; the asterisks can be often omitted in the generic syntax; see the syntax documentation for details).

RiverEquity(player) is a function returning the share of the pot that the player wins (from 0 to 1, e.g. 0.5 for a split). So replace 0.75 by 0.5 and 0.25 to get the other two queries.

There's also a special boolean function scoops(player), whose result is equivalent to riverEquity(player)=1.

Actually, many queries can be run in one using the 'as' construction:

Code:
select
count(
scoops(hero)
) as HeroScoops,
count(
riverEquity(hero)=0.75
) as HeroQuarters,
count(
riverEquity(hero)=0.5
) as Split,
count(
riverEquity(hero)=0.25
) as VillainQuarters,
count(
scoops(villain)
) as VillainScoops
from game='omaha8', hero='2345',
villain='A$B,AA,KK,QQ,JJ,TT,AOP$L,A$W$W,A$W$M'
If you don't possess Odds Oracle Pro, you can still run queries in the free PQL runner, possibly many times (it's not that necessary in our case, though - the precision is OK) to have more Monte-Carlo trials in total, and then take the average result (the number of trials per query is sometimes too low in the online version to enable satisfactory accuracy), but mind that you'll have to put smth like extra parentheses or spaces (not changing the sense) into the query (e.g. riverEquity(hero)=0.75 -> (( riverEquity(hero) = 0.75)) ) so that the runner do new trials and spit out different results (if you put in all the same query, it will be lazy and copypaste its own previous results).

In our case, the probabilities for Hero are approximately:

scoops 30.8%
quarters 0.3%
splits 28.9%
quartered 0.7%
scooped 39.3%

Mind that, for sixthing, the correct way to input fractions of the pot is 2.0/3 and 1.0/6 because 0.67 doesn't equal 2.0/3 (and the hence the query will return 0) and 2/3 is deemed as division of integers (with a remainder) returning zero.

Code:
select count(
riverEquity(hero)=2.0/3
) from game='omaha8', hero='A2',
villain='A2', villainess='A2'

Last edited by coon74; 08-09-2014 at 06:37 AM. Reason: clarification about sixthing and running many queries in one
Can you crack it - Math Cracks!? Quote
08-10-2014 , 11:32 AM
Thank you very much dude - looks like PQL gets the job down!
Can you crack it - Math Cracks!? Quote

      
m