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;
}