在没有预期均值的情况下测试随机函数
Testing randomness function without intended mean
我有一个程序可以测试随机函数的真正随机性:
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));
但是他们是一种去除预期均值并仍然具有相对准确输出的方法吗?到目前为止,我的想法是创建一个标准偏差设置,但我不确定这是正确的想法。
我找到了答案。我不确定标准偏差是否是正确的方法,但如果是:
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));
这样就可以了。
我有一个程序可以测试随机函数的真正随机性:
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));
但是他们是一种去除预期均值并仍然具有相对准确输出的方法吗?到目前为止,我的想法是创建一个标准偏差设置,但我不确定这是正确的想法。
我找到了答案。我不确定标准偏差是否是正确的方法,但如果是:
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));
这样就可以了。