JSFiddle - React, Tailwind, and code Playground
Random 10K Pool
by skibulk
HTML
<div id="status"></div>
JavaScript
console.clear();
var pool = 1000;
var counts = [];
for(var i = 0; i < pool; i++){
counts.push(1);
}
//console.log(counts);
var lowestID = 0;
var runs = Math.floor(10000/33);
var status = document.getElementById("status");
function run(){
for(var i = 0; i < 30; i++){
var key = Math.floor(Math.random() * pool);
replace(key);
}
// Give rewards from the bottom
replace(0);
replace(0);
replace(0);
if(runs-- > 0){
status.innerHTML = runs + " runs left";
setTimeout(run, 10);
} else {
var maxID = counts.reduce((a, b) => a + b, 0);
var flat = counts.join(",");
console.log(lowestID, maxID, flat.length, flat);
}
}
function replace(key){
var val = counts.splice(key, 1)[0];
if(key > 0){
counts[key - 1] += val;
} else {
lowestID += val;
}
counts.push(1);
}
setTimeout(run, 10);
/*
var compact = [];
var prev = counts[0];
var prevCount = 1;
for(var j = 1; j < pool + 1; j++){
if(counts[j] == prev){
prevCount++;
} else if(prevCount > 1){
compact.push(prev + "x" + prevCount);
prev = counts[j];
prevCount = 1;
} else {
compact.push(prev);
prev = counts[j];
prevCount = 1;
}
}
console.log(compact.join(","));
*/