如何通过实际的、真实的生活事件来模拟正态分布数据,而不是使用数学公式?

How to emulate normal distribution data by actual, real life events, instead of using a math formula?

我正在尝试生成一些钟形数据(正态分布)。有一些数学公式可以实现这一点,但我希望通过现实生活中发生的自然的日常事件来模拟它。

比如,我是说,对于50个学生,假设他们有70%的机会在选择题考试中答对100道题。那么每个学生得多少分呢?我在 JavaScript:

中有代码

students = Array.from({ length: 50 });

students.forEach((s, i, arr) => {
  let score = 0;
  for (let i = 0; i < 100; i++) {
    if (Math.random() >= 0.3) score++;
  }
  arr[i] = score;
});

console.log(students);

但结果似乎不是正态分布。例如,我得到:

[
  69, 70, 67, 64, 71, 72, 77, 70, 71, 64, 74,
  74, 73, 80, 69, 68, 67, 72, 69, 70, 61, 72,
  72, 75, 63, 68, 71, 69, 76, 70, 69, 69, 67,
  63, 65, 80, 70, 62, 68, 63, 73, 69, 64, 79,
  79, 72, 72, 70, 70, 66
]

没有12、20分的学生,也没有88、90、95分(能拿到A的学生)的学生。有没有办法模拟现实生活中的事件来生成正态分布数据?

两期:

  • 100 名学生的样本可能有点太小,无法产生这样的模式; 10000个同学给个更好的看法
  • 您可以通过计算具有给定分数的学生人数来更好地可视化统计数据。所以你会得到每个潜在分数 (0..100) 的计数。

现在你可以看到贝尔曲线了:

let students = Array.from({ length: 10000 });
let studentsWithScore = Array(101).fill(0); 

students.forEach(() => {
  let score = 0;
  for (let i = 0; i < 100; i++) {
    if (Math.random() >= 0.3) score++;
  }
  studentsWithScore[score]++;
});

console.log(studentsWithScore);