问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

用Manim实现高尔顿板(Galton Board)

创作时间:
作者:
@小白创作中心

用Manim实现高尔顿板(Galton Board)

引用
CSDN
1.
https://blog.csdn.net/qq_45449625/article/details/142713251

高尔顿板(Galton Board),又称贝尔图(Bean Machine),是英国统计学家弗朗西斯·高尔顿于19世纪末发明的一种物理装置,用于演示随机分布和大数法则的概念。它通过简单的机械原理展示了概率和统计的基本概念。本文将介绍高尔顿板的工作原理,并使用Manim库实现其动画效果。

高尔顿板的介绍

高尔顿板(Galton Board),有时也称为贝尔图(Bean Machine),是由英国统计学家弗朗西斯·高尔顿(Francis Galton)于19世纪末发明的一种物理装置,用于演示随机分布和大数法则的概念。它通过简单的机械原理展示了概率和统计的基本概念。

高尔顿板是一个简单而有效的工具,通过直观的物理演示使得复杂的概率和统计概念变得易于理解。它不仅是教育的有效工具,也是研究随机性和分布特性的重要模型。

结构与原理

结构:

  • 高尔顿板通常由一个倾斜的木板或其他材料制成,面板上排列着若干个固定的小钉或障碍物,形成一个网格状的结构。底部有多个接收容器(例如小盒子或小槽),用于收集掉落的颗粒或小球。

工作原理:

  • 顶部的槽(或投入口)用于放置小球。当小球从顶部落下时,它们会碰到网格中的钉子。每次碰撞时,小球都有50%的概率向左或向右偏移,导致小球沿着随机路径向下移动。
  • 随着小球不断下落,它们最终将停在底部的接收容器中。由于每个球的下落路径是随机的,经过多次实验后,落入各个槽中的小球数量会呈现出明显的钟形正态分布。

数学与统计意义

  • 大数法则: 高尔顿板是展示大数法则的经典案例之一。随着投入的小球数量的增加,落入各个接收容器的数量趋向于正态分布,即使小球的每次下落是随机的,但总体的结果表现出稳定的模式。
  • 中立性和随机性: 高尔顿板展示了随机性下的平衡现象。虽然每个小球的移动路径是随机的,但它们最终的数量分布却可以预测。

应用

  • 高尔顿板常用于教育和教学,帮助学生理解概率、统计、正态分布、大数法则等概念。
  • 也被广泛应用于统计学、心理学和经济学等其他学科的可视化实验中。

创建manim代码

from manim import *  
import random  

class GaltonBoard(Scene):  
    # 配置信息  
    config = {  
        "runTime": 16,  # 动画运行时间  
        "itemsTotal": 100,  # 总点数  
        "itemDelayFrames": 1,  # 点出现间隔(帧数)  
        "hexSize": .2,  # 六边形的大小  
        "hexVerticalShift": .6,  # 六边形的垂直偏移  
        "hexGorizontalShift": .4,  # 六边形的水平偏移  
        "hexRowsCount": 7,  # 六边形的行数  
        "firstHexCenterX": -3,  # 第一个六边形的中心x坐标  
        "firstHexCenterY": 3,  # 第一个六边形的中心y坐标  
        "durationSeconds": 2,  # 每个点的运动持续时间  
        "circleRadius": .05,  # 小圆点的半径  
        "firstDot": [-3, 4.3, 0]  # 第一个点的位置  
    }  

    frameNumber = 0  # 帧计数器  

    def construct(self):  
        # 创建表格、计数器、六边形、顶点和小点  
        table = self.createTable()  # 生成表格  
        counter = self.createCounter()  # 生成计数器  
        hexagons = self.createHexagons()  # 生成六边形  
        vertices = self.createVertices()  # 生成六边形的顶点  
        items = self.createItems(verti  
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号