微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

例如,我的意思是,对于 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,74,73,80,69,68,61,75,63,76,65,62,79,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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。