作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我被分配了创建一个简单的控制台应用程序的项目。模拟二维平面中的布朗运动。我没有得到太多关于如何做到这一点的信息(我希望这是一个非常受欢迎的任务,这样我可以获得一些见解)只是它依赖于随机数生成。稍微研究了一下布朗运动,看到了一些看起来很复杂的公式,但是看描述好像只是在一定的数区间内随机运动而已。谁能澄清一下?我是要创建一个程序,在一个时间间隔内不断创建一个随机数,然后修改粒子“x”和“y”坐标,还是还有更多?
感谢您的帮助。
最佳答案
布朗运动是随机空气分子撞击小颗粒的结果。由于一堆随机力的总和不太可能恰好为 0,而且粒子的质量非常小,它看起来会四处晃动,因此产生布朗运动。所以你会得到一个看似随机的运动,但并不是一律如此。
对其建模的愚蠢方法是获得数百个空气分子的方向均匀分布和动量高斯分布,对粒子应用碰撞,然后求和。多次这样做,您将获得布朗运动。 (单个空气分子的平均动量取决于温度,空气分子的数量取决于压力。)
请注意,生成的运动不是高斯运动,而是高斯分布中许多样本的总和。不知道它叫什么。
关于c++ - 随机游走-布朗运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10067325/
我是一名优秀的程序员,十分优秀!