在没有预期均值的情况下测试随机函数

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));

这样就可以了。