智游城
标题:
ICM算法(Java版本)
[打印本页]
作者:
Howard
时间:
2011-1-8 00:49
标题:
ICM算法(Java版本)
/**
* \param payouts Payout structure, e.g.: new double[]{0.5,0.3,0.2}
* \param stacks Player stacks
* \param player Index of selected player in the stack-array
* \returns ICM equity for selected player
*/
public static double getEquity ( double [] payouts, double [] stacks, int player )
{
double total = 0 ;
for ( int i = 0 ; i < stacks.length; i++ )
total += stacks [ i ] ;
return getEquity ( payouts, stacks.clone () , total, player, 0 ) ;
}
//Recursive method doing the actual calculation.
private static double getEquity ( double [] payouts, double [] stacks, double total, int player, int depth )
{
double eq = stacks [ player ] / total * payouts [ depth ] ;
if ( depth + 1 < payouts.length )
for ( int i = 0 ; i < stacks.length; i++ )
if ( i != player && stacks [ i ] > 0.0 ) {
double c = stacks [ i ] ;
stacks [ i ] = 0.0 ;
eq += getEquity ( payouts, stacks, total - c, player, depth + 1 ) * c / total;
stacks [ i ] = c;
}
return eq;
}
复制代码
来源:
http://www.holdemresources.net/hr/sngs/icm/icmjava.html
Bean是Java高手,一定懂的。我还在慢慢琢磨
作者:
pokerbean
时间:
2011-1-8 02:58
晕!火花真有钻研精神,我可不想读code。
作者:
luckypanda
时间:
2011-1-8 08:44
对我来说就是天书。
作者:
greatsunkai
时间:
2011-1-9 22:22
仅适用于单桌SNG吧,看奖金分布是0.5 0.3 0.2的。这个用excel也能很快算出来
作者:
Howard
时间:
2011-1-10 21:52
仅适用于单桌SNG吧,看奖金分布是0.5 0.3 0.2的。这个用excel也能很快算出来
greatsunkai 发表于 2011-1-9 22:22
不仅仅适用于单桌SNG,多桌一样好使。代码注释中出现了 0.5 0.3 0.2 是作者举的例子而已。
作者:
fafafafefe
时间:
2011-1-11 02:12
多桌要到差不多final table的时候ICM才显得比较重要
欢迎光临 智游城 (http://zhiyoucheng.co/)
Powered by Discuz! X3.2