Keno Loto simulation

by egon

HTML

<div id="log">
</div>

JavaScript

logdiv = document.getElementById("log");

function log(msg){
    logdiv.innerHTML += "<p>" + msg + "</p>";
}

function PickNumbers(count, total){
    var i, set = [],
        result = [];
    for(i=total; i--;)
        set.push(i);
    for(i=count; i--;){
        var picked = (Math.random() * set.length) | 0;
        result.push(set[picked]);
        set.splice(picked,1);
    }
    return result.sort();
};

function Matches(mine, set){
    var matches = 0;
    for(var i = mine.length; i--;)
    for(var j = set.length; j--;)
        if( mine[i] == set[j] ) 
            matches += 1;
    return matches
}

function Simulate(bank, pay, turns){
    for(var i=turns; i--;){
        bank -= pay;
        mine = [0,1];
        keno = PickNumbers(20,64);
        if( Matches(mine, keno) >= 2)
            bank += pay*5;
        if(bank <= 0)
            break;
    }
    return bank;
}

function Multiple(bank, pay, turns, simulations){
    var i, results = [];
    for(i=simulations; i--; )
        results.push( Simulate(bank, pay, turns) );
    
    var avg = 0, netpositive = 0;
    for(i=results.length; i--;){
        if (results[i] > bank)
            netpositive += 1;
        avg += results[i];
    }
    log(avg/results.length);
    log(netpositive + "/" + simulations);
}
    
Multiple(100, 5, 20, 1000)