JSFiddle - React, Tailwind, and code Playground

by bobi

HTML

How many tickets do you need to buy to win the lottery?
- will alert on success (unlikely).
- each run is 300k tickets = 300k$

JavaScript

//http://en.wikipedia.org/wiki/Mega_Millions
var ticket = 1; //1usd
var wins = [];

wins[0] = 0;

wins[1] = 0;
wins[10] = 3; 

wins[2] = 0;
wins[20] = 10;

wins[3] = 7;
wins[30] = 150;

wins[4] = 150;
wins[40] = 10 * 1000;

wins[5] = 250 * 1000;
wins[50] = 'Jackpot';

// 7/8/2011 
var latestLot = [1,2,22,37,50], 
    mega = 45;


var debt = 0,
    won = 0,
    balance = 0;
    

for(var i=1;i<=300*1000;i++){
    roll();
    balance = won + debt; 
    if(i%1000 == 0){
        document.write('tickets: ' + i + ', won: ' + won + '$, balance: <b>' + balance + '$</b><br /><br />');
    }
    
    //should never happen
    if(balance > 0) {
        document.write('tickets: ' + i + ', won: ' + won + '$, balance: <b>' + balance + '$</b><br /><br />');
        alert('congretz, you beat the system.');
        break;
    }

    
}
    
    
function roll(){
    
    debt -= ticket;

    var myNums = [],
    correct = 0;

    for(var i=0;i<5;i++){
        var guess = getGuess(myNums);
        if(isInArray(latestLot, guess)){
                    
            correct++;
            myNums.push(guess);
        }
    }

    var m = Math.round(Math.random()*46);
    
    if(m == mega) {
        if(correct == 0) {
            won += 2;
            return;
        }

        correct *= 10;
    }

    if(correct == 50) {
        alert('Jackpot');
        die++;
        }
    
     won += wins[correct];
}


function getGuess(myGuesses){
    var guess = Math.round(Math.random()*56);
        if(isInArray(myGuesses, guess))
            return getGuess(myGuesses);
        else
            return guess;
}

function isInArray(arr, i){

    for(var x=0;x<arr.length;x++){
        if(arr[x] == i)
            return true;
    }
    return false;
}