如何通过实际的、真实的生活事件来模拟正态分布数据,而不是使用数学公式?
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);
我正在尝试生成一些钟形数据(正态分布)。有一些数学公式可以实现这一点,但我希望通过现实生活中发生的自然的日常事件来模拟它。
比如,我是说,对于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);