Lotto Numbers Generator

by Eugene Vilder

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/seedrandom/3.0.1/seedrandom.min.js"></script>
<h2 id='result'></h2>
<h3>Good Luck :)</h3>
<div id='buttons'></div>
<small id='timer'></small>

CSS

button {
  padding: 1em 2em;
  cursor: pointer;
  border-radius: .5em;
  color: #FFF;
}
button.lottoMax {
  background: #84BD00;
}

button.six49 {
  background: #0C4D8C;
}

button.grand {
  background: #F6A202;
}

button:disabled {
  opacity: .5;
}

small {
  display: block;
  margin-top: 1em;
}

JavaScript

const randomNumber = new Math.seedrandom('added entropy.', { entropy: true });
let startRunTime = 0;
let endRunTime = 0;
const games = {
	lottoMax: {
  	pick: 7,
  	maxNumber: 50,
    grandNumber: false,
    title: 'Lotto MAX',
    possibleVariants: 33294800
  },
  six49: {
    pick: 6,
  	maxNumber: 49,
    grandNumber: false,
    title: 'Lotto 6/49',
    possibleVariants: 13983816
  },
  grand: {
    pick: 5,
  	maxNumber: 49,
    grandNumber: true,
    title: 'Lotto Grand',
    possibleVariants: 13348188
  }
}

for (let gameType in games){
	const button = document.createElement("button");
    button.className = gameType;
    button.innerHTML = games[gameType].title;
    button.setAttribute('name', gameType); 
    button.addEventListener('click', runGame);
	document.getElementById("buttons").appendChild(button);
}

function runGame(e){
  run(e.target.name);
}

function generateVariants (gameType) {
	const MIN = 1, MAX = games[gameType].maxNumber;
  const variants = {}, grands = {};
  
  for (let i=0; i < games[gameType].possibleVariants; i++) {
    for (let i=0; i < games[gameType].pick-1; i++) {
      const num = Math.floor(randomNumber() * MAX + MIN);
      variants[num] = variants[num] || 0;
      variants[num]++;
    }
  }
  
  if (games[gameType].grandNumber) {
    for (let i=0; i < games[gameType].possibleVariants; i++) {
        const num = Math.floor(randomNumber() * 7 + 1);
        grands[num] = grands[num] || 0;
        grands[num]++;
    }
  }
  
  return {variants, grands};
}
function generateLuckyNumbers(gameType){
	const sortable = [], sortableGrands = [];
	const {variants, grands} = generateVariants(gameType);
  
  for (var key in variants) {
      sortable.push([key, variants[key]]);
  }
    
  for (var key in grands) {
      sortableGrands.push([key, grands[key]]);
  }
  
  
  endRunTime = new Date().getTime();

	document.getElementById('timer').innerHTML = 'Run time: ' + (endRunTime - startRunTime) / 1000 + ' sec';
  
	const numbersResult =...