RosettaCodeData/Task/Unbias-a-random-generator/JavaScript/unbias-a-random-generator.js
2026-04-30 12:34:36 -04:00

20 lines
497 B
JavaScript

const randN = N => () => Math.floor(Math.random() * N) === 0;
function unbiased(f) {
let x, y;
do {
x = f(), y = f();
} while (x === y);
return x;
}
for (let i = 3; i <= 6; i++) {
const biased = randN(i);
let b = [], ub = [];
for (let j = 0; j < 10000; j++) {
b.push(biased());
ub.push(unbiased(biased));
}
const onecounts = [b, ub].map(a => a.filter(x => x).length / 100);
console.log(`N = ${i}: biased ${onecounts[0]}% ones, unbiased ${onecounts[1]}% ones`);
}