Lottery Generator
by antyrat
HTML
<label for="exclude">Exclude</label>
<input type="text" id="exclude" placeholder="Exclude">
<label for="n">Numbers in a row</label>
<input type="number" id="n" value="6" min="5">
<label for="iter">How much?</label>
<input type="number" id="iter" value="1" min="1">
<label for="max">Max number</label>
<select id="max">
<option value="52">52</option>
<option value="45">45</option>
</select>
<input type="button" id="generate" value="Generate">
<div id="result"></div>
CSS
label {
display: block;
}
#result {
margin-top: 20px;
}
JavaScript
const getById = id => document.getElementById(id);
const val = id => getById(id).value;
const valN = val => parseInt(val, 10);
const random = max => Math.ceil(Math.random() * max);
getById('generate').addEventListener('click', () => {
const exclude = val('exclude').split(',').map(val => valN(val));
const n = valN(val('n'));
const iter = valN(val('iter'));
const maxNode = getById('max');
const max = valN(maxNode.options[maxNode.selectedIndex].value);
let results = [];
for (let i = 0; i < iter; i++) {
let result = [];
while (result.length < n) {
let ran = random(max);
if (result.includes(ran) || exclude.includes(ran)) {
continue;
}
result.push(ran);
}
results.push(result.sort((a, b) => a > b));
}
getById('result').innerHTML = '';
results.forEach((result) => {
const div = document.createElement('div');
const resultString = result.map((val) => val < 10 ? '0' + val : val);
resultString.forEach((val) => {
div.innerHTML += val + ' ';
})
getById('result').appendChild(div);
});
}, false);