Putting probability and theory to the test.
Tests to see if the probability of winning a basic straight “Pick 3” lottery is in fact (1/10)^3.
Horsing around with some function JS
` //Generate a combo
function generateCombo(numBalls){
let localArr = [];
for (var i = 0; i<numBalls; i++)
localArr.push(Math.floor(Math.random() * 10));
return localArr;
}
//used to see if our ticket matches winner
//compares two arrays
function compareArrs(arrX, arrY){
let areEqual = true;
if(arrX.length == arrY.length){
for(var i = 0; i < arrX.length; i++){
if(arrX[i] != arrY[i])
areEqual = false;
}
} else
areEqual = false;
return areEqual;
}
//Play using recursion
//WARNING CAN OVERFLOW MEMORY LIMIT
function recurPlay(numBalls,iterator){
let myTicket = generateCombo(numBalls); // Generate our Lotto Ticket
let winningCombo = generateCombo(numBalls); // Generate winning comobo
let didWeWin = compareArrs(myTicket, winningCombo);
if (didWeWin == true){
console.log("Won");
console.log(myTicket + " : " + winningCombo + " : " + iterator);
} else {
iterator++;
return recurPlay(numBalls,iterator);
}
return iterator;
}
//Play using a loop
function loopPlay(numBalls,iterator){
let didWeWin = false;
do {
let myTicket = generateCombo(numBalls); // Generate our Lotto Ticket
let winningCombo = generateCombo(numBalls); // Generate winning comobo
didWeWin = compareArrs(myTicket,winningCombo);
iterator++;
}
while (didWeWin == false);
return iterator;
}
function findAverage (iterations, numBalls){
let localArr = [];
let runningTotal = 0;
for (var i = 0; i < iterations; i++){
//runningTotal += recurPlay(numBalls,0);
runningTotal += loopPlay(numBalls,0);
}
console.log(runningTotal/iterations);
}
//findaverage(numberOfIteration, numberOfBalls);
findAverage(1000, 4);
`
**Edit or pick 4 — whatever, just change the second arguement on the findav func at the bottom. Test “Pick 45” if you want -