EPT NLHE

2014 Monte Carlo

HTML

<script type="text/javascript" src="http://www.amcharts.com/lib/3/amcharts.js"></script>
<script type="text/javascript" src="http://www.amcharts.com/lib/3/serial.js"></script>
<script type="text/javascript" src="http://www.amcharts.com/lib/3/themes/none.js"></script>
<script type="text/javascript" src="http://www.amcharts.com/lib/3/exporting/amexport.js"></script>
<script type="text/javascript" src="http://www.amcharts.com/lib/3/exporting/rgbcolor.js"></script>
<script type="text/javascript" src="http://www.amcharts.com/lib/3/exporting/canvg.js"></script>
<script type="text/javascript" src="http://www.amcharts.com/lib/3/exporting/filesaver.js"></script><div id="chartdiv"></div>

CSS

#chartdiv {
	width	: 650px;
	height	: 500px;
}

JavaScript

// modify these values and the min/max for valueAxis in line 150
var iterations = 100;
var games = 100;

var playercount = 200;
var buyin = 2200;
var multiplier = 1;


var i;
var tracking = [];
var chartData2 = [];

for (var iteration = 0; iteration < iterations; iteration++) {
	var bank = [];
    for (i = 0; i < playercount; i++) {
        var p = {player: i, wins: 0, cash: 0};
        bank.push (p);
    }
    for (var g = 0; g < games; g++) {
        bank = shuffle (bank);
        for (i = 0; i < playercount; i++) {
            bank[i].cash -= buyin;
            bank[i].cash += EPTpayout(i+1);
        }
    }
    bank.sort (sortByCash);
    tracking.push (bank);
}
for (i = 0; i < playercount; i++) {
    var cashdata = [];
    for (var iteration = 0; iteration < iterations; iteration++) {
        cashdata.push (tracking[iteration][i].cash);
    }
    cashdata.sort (function(a, b){return b-a});
    chartData2.push ({pos: i+1, min: cashdata[cashdata.length-1]/games*100/buyin, max: cashdata[0]/games*100/buyin, med: median(cashdata)/games*100/buyin});
}

function sortByCash (a, b) {
	if (a.cash < b.cash) {
		return 1;
	} else {
		return -1;
	}
}

function median(values) {
 
    values.sort( function(a,b) {return a - b;} );
 
    var half = Math.floor(values.length/2);
 
    if(values.length % 2)
        return values[half];
    else
        return (values[half-1] + values[half]) / 2.0;
}

function EPTpayout (position) {
    payout = 0;
    if (position < 28) {
        var prizepool = 388000;
        switch (position) {
            case 27:
            case 26:
            case 25:
            case 24:
                payout = 0.0103*prizepool;
                break;
            case 23:
            case 22:
            case 21:
                payout = 0.0108*prizepool;
                break;
            case 20:
            case 19:
            case 18:
                payout = 0.0120*prizepool;
                break;
            case 17: 
            case 16: 
   ...