Skip to content

Instantly share code, notes, and snippets.

@LeoMcA
Created June 15, 2013 21:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LeoMcA/5789701 to your computer and use it in GitHub Desktop.
Save LeoMcA/5789701 to your computer and use it in GitHub Desktop.
<!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