如何使用均匀分布随机数生成器生成 Maxwell-Boltzmann 变量?

计算科学 计算物理学 分子动力学 随机数生成 可能性
2021-12-14 20:49:32

我正在做一个分子动力学模拟。我需要为原子分配初始速度。我想分配遵循 Maxwell-Boltzmann 分布的初始速度。如何使用范围为 [0,1) 的均匀随机数生成器计算此类初始速度?

1个回答

初始速度来自具有方差的高斯分布

σi2=kBTmi,
在哪里kB表示玻尔兹曼常数,T是温度和mi是质量ith粒子。

因此,问题归结为使用均匀分布的随机数从高斯分布生成随机数。幸运的是,这很简单:维基百科文章 https://en.wikipedia.org/wiki/Box–Muller_transform 展示了一些非常常见的算法,如何将均匀随机数转换为高斯随机数。

让我们把所有东西放在一起:速度的每个组成部分ith粒子是通过计算

vi,α=kBTmiN(0,1),α{x,y,z},
在哪里N(0,1)是高斯随机数,方差为 1,均值为 0。

有了这个定义,每个速度分量都服从高斯分布

π(vα)dvαexp(vα22σ2)dvα,
但是当你在球坐标中写出速度矢量的分布并对角分量进行积分时,你会得到
π(v)dvv2exp(v22σ2)dv,
这是所需的麦克斯韦-玻尔兹曼分布。