Created
June 15, 2013 21:50
-
-
Save LeoMcA/5789701 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype> | |
<html> | |
<head> | |
<meta charset="utf8"> | |
<title>Lotto!</title> | |
<style> | |
input { | |
width: 50px; | |
} | |
#results { | |
width: 500px; | |
height: 500px; | |
overflow: scroll; | |
} | |
</style> | |
</head> | |
<body> | |
<label>Bets: <input class="bets" value="1"><input class="bets" value="2"><input class="bets" value="3"><input class="bets" value="4"><input class="bets" value="5"><input class="bets" value="6"></label> | |
<label>Iterations: <input id="iterations" value="1"></label> | |
<label>Min random number: <input id="min-rand" value="1"></label> | |
<label>Max random number: <input id="max-rand" value="49"></label> | |
<button>CLICK ME!</button> | |
<div id="results"> | |
</div> | |
<script> | |
function $ (selector) { | |
return document.querySelector(selector); | |
} | |
function addToResults (html) { | |
$("#results").insertAdjacentHTML("beforeend", html+"<br>"); | |
} | |
function getRandomInt (min, max) { | |
return Math.floor(Math.random() * (max - min + 1)) + min; | |
} | |
function drawNumbers (times, min, max) { | |
var numbers = new Array(); | |
while (numbers.length < times) { | |
var rand = getRandomInt(min,max); | |
var match = false; | |
numbers.forEach(function (val) { | |
if (val == rand) match = true; | |
}); | |
if (!match) numbers.push(rand); | |
} | |
return numbers; | |
} | |
function getBets () { | |
var bets = new Array(6); | |
for (var i = 0; i < bets.length; i++) { | |
bets[i] = document.querySelectorAll(".bets")[i].value; | |
} | |
return bets; | |
} | |
function iterateNumbers (numbers, bet) { | |
for (var x = 0; x < numbers.length; x++) { | |
if (bet == numbers [x]) return true; | |
} | |
return false; | |
} | |
function iterateBets (bets, numbers) { | |
var match = false; | |
for (var i = 0; i < bets.length; i++) { | |
match = iterateNumbers(numbers, bets[i]); | |
if (!match) return false; | |
} | |
return true; | |
} | |
function iterateUntilMatch () { | |
var start = Date.now(); | |
var bets = getBets(); | |
var iterations = 0; | |
var min = parseInt($("#min-rand").value); | |
var max = parseInt($("#max-rand").value); | |
while (true) { | |
var numbers = drawNumbers(6, min, max); | |
var match = iterateBets(bets, numbers); | |
if (match) { | |
var end = Date.now(); | |
addToResults(iterations+" iterations, took: "+(end-start)+"ms"); | |
break; | |
} | |
iterations++; | |
} | |
return iterations; | |
} | |
function iterateIterations () { | |
var start = Date.now(); | |
var results = Array(); | |
var sum = 0; | |
for (var x = 0; x < parseInt($("#iterations").value); x++) { | |
var iterations = iterateUntilMatch(); | |
results.push(iterations); | |
} | |
results.forEach(function (val) { | |
sum += val; | |
}); | |
var mean = sum/results.length; | |
var end = Date.now(); | |
addToResults("Mean: "+mean+" iterations, took: "+(end-start)+"ms"); | |
} | |
$("button").addEventListener("click", iterateIterations); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment