Tengo un programa que prueba una función de aleatoriedad para ver cuán verdaderamente aleatoria es:
function testRandom(randomF, tests, intendedMean){ let total = 0; for(let t = 0; t < tests; t++){ total+=randomF(); } return Math.abs((total/tests) - intendedMean); } const randomFunc = () => { return ~~(Math.random() * 2) + 1 } //returns a randomly choosen 1 or 2. console.log(testRandom(randomFunc, 100, 1.5));Pero, ¿es una forma de eliminar la media prevista y aún así tener un resultado relativamente preciso? Mis ideas hasta ahora son crear una configuración de desviación estándar, pero no estoy seguro de que sea la idea correcta.
He encontrado la respuesta. No estoy seguro si la desviación estándar es el método correcto, pero si lo es:
function testRandom(func, tests) { let data = []; for (let i = 0; i < tests; i++) { data.push(func()) } let result = 0; const u = data.reduce((a, b) => a + b, 0) / data.length; for (let d of data) { result += (d - u) ** 2; } return Math.sqrt(result / data.length + 1) - 1; } console.log(testRandom(() => { return Math.random() }, 100));Esto hará el trabajo.