| 查看: 3138 | 回复: 12 | |||||
| 本帖产生 1 个 模拟EPI ,点击这里进行查看 | |||||
[交流]
【转帖】蒙特卡罗算法计算圆周率 已有7人参与
|
|||||
|
蒙特卡罗算法的原理是:考虑一个正方形和它的内切圆。 在正方形内随机取一点,其落在圆内的概率应该是二者(圆和方)的面积比。 我的算法是取 R=32767,在第一象限作采样。 专家解答: 这个尺寸是模糊的,还受库设计的影响。在PDP-11^[10]机器上运行的仅有的C实现中, 有一个称为rand()的函数可以返回一个(伪)随机非负整数。 PDP-11中整数长度包括符号位是16位,因此rand()返回一个0到2^15-1之间的整数。 当C在VAX-11上实现时,整数的长度变为32位长。那么VAX-11上的rand()函数返回值范围是什么呢? 对于这个系统,加利福尼亚大学的人认为rand()的返回值应该涵盖所有可能的非负整数, 因此它们的rand()版本返回一个0到2^31-1之间的整数。而AT&T的人则觉得如果rand()函数 仍然返回一个0到2^15之间的值 则可以很容易地将PDP-11中期望rand()能够返回一个小于 2^15的值的程序移植到VAX-11上。 因此,现在还很难写出不依赖实现而调用rand()函数的程序。 |
» 收录本帖的淘帖专辑推荐
学习方法 | matlab |
» 猜你喜欢
上海工程技术大学【激光智能制造】课题组招收硕士
已经有6人回复
带资进组求博导收留
已经有11人回复
自荐读博
已经有5人回复
求个博导看看
已经有16人回复
上海工程技术大学张培磊教授团队招收博士生
已经有4人回复
求助院士们,这个如何合成呀
已经有4人回复
临港实验室与上科大联培博士招生1名
已经有9人回复
写了一篇“相变储能技术在冷库中应用”的论文,论文内容以实验为主,投什么期刊合适?
已经有6人回复
最近几年招的学生写论文不引自己组发的文章
已经有11人回复
中科院杭州医学所招收博士生一名(生物分析化学、药物递送)
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
为什么采用CASTEP计算CaTiO3的光学性质其中的静态介电常数与实验值相差很大
已经有14人回复
这个审稿意见如何回答(HOMO能级计算方面)?
已经有29人回复
matlab处于busy
已经有7人回复
计算晶体的能带谱图发现了一个很奇怪的现象
已经有9人回复
vasp计算过渡态问题
已经有13人回复
如何让MS中途计算暂停
已经有14人回复
CASTEP可以计算吉布斯自由能吗?
已经有14人回复
matlab反求未知输入参数
已经有4人回复
Gaussian计算得到的前线分子轨道图能说明什么?
已经有7人回复
求助:利用蒙特卡罗方法和遗传算法求解可靠度的程序
已经有13人回复
【求助】MS计算CPU占用率问题,求教
已经有17人回复
【求助】好迷惑啊!!!有关S0、S1的TDDFT和CIS计算
已经有6人回复

yalefield
金虫 (文坛精英)
老汉一枚
- 模拟EPI: 1
- 应助: 129 (高中生)
- 贵宾: 0.17
- 金币: 21238.9
- 散金: 3440
- 红花: 66
- 帖子: 12101
- 在线: 759.1小时
- 虫号: 96063
- 注册: 2005-10-07
- 专业: 高等教育学
- 管辖: 计算模拟
2楼2010-09-09 12:41:22

3楼2010-09-09 12:45:26
maomao1210
金虫 (正式写手)
- 应助: 2 (幼儿园)
- 金币: 1431.3
- 散金: 242
- 红花: 16
- 沙发: 1
- 帖子: 991
- 在线: 441.5小时
- 虫号: 253215
- 注册: 2006-05-20
- 性别: MM
- 专业: 考古理论
4楼2010-09-09 14:56:27

5楼2010-09-09 17:32:03
yahoohoo
铁杆木虫 (著名写手)
- 模拟EPI: 10
- 应助: 0 (幼儿园)
- 贵宾: 1.55
- 金币: 7632.4
- 散金: 251
- 红花: 4
- 帖子: 1176
- 在线: 167小时
- 虫号: 74894
- 注册: 2005-06-15
- 性别: GG
- 专业: 理论和计算化学
★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
lei0736(金币+5):谢谢 2010-09-09 19:29:15
小木虫(金币+0.5):给个红包,谢谢回帖交流
lei0736(金币+5):谢谢 2010-09-09 19:29:15
|
Monte Carlo 模拟中随机数的选择是很重要的,系统自带的一般还是不要用。推荐使用 Mersenne Twister。 int main() { prng.init(); // random number generator initialization const int N = 1048576; // 2^10, MC cycles int K = 0; // counter for (int i = 0; i < N; ++i) if (pow(prng.gen_open0_open1(), 2) + pow(prng.gen_open0_open1(), 2) <= 1) ++K; double PI = (double)K/(double)N * 4.0; // estimate of $\pi$ return 0; } |
6楼2010-09-09 18:49:11

7楼2010-09-09 18:50:49
yahoohoo
铁杆木虫 (著名写手)
- 模拟EPI: 10
- 应助: 0 (幼儿园)
- 贵宾: 1.55
- 金币: 7632.4
- 散金: 251
- 红花: 4
- 帖子: 1176
- 在线: 167小时
- 虫号: 74894
- 注册: 2005-06-15
- 性别: GG
- 专业: 理论和计算化学
★ ★ ★ ★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
ghcacj(金币+8, 模拟EPI+1):谢谢 2010-09-09 20:50:01
小木虫(金币+0.5):给个红包,谢谢回帖交流
ghcacj(金币+8, 模拟EPI+1):谢谢 2010-09-09 20:50:01
|
这里的Monte Carlo算法实际上是所谓的简单抽样,即 Simple Sampling。它的核心思想是人为产生大量的点,从而尽可能地遍历相空间。就这个例子而言,我们产生大量的在 $x \in (0, 1)$与 $y \in (0, 1)$区域均匀分布的点,其中被 $x^2+y^2=1$包括的所有点就是我们所感兴趣的相空间的子集,那么这样的点越多,我们对该相空间的描述的统计精度就越高,在计算上这表现为 MC循环越多,我们得到的估计值就越逼近真实值(当然,这需要均匀分布的伪随机数生成器)。 这是MC入门的一个简单例子,而实际的分子模拟中,由于自由度太多,相空间太大,上述的简单抽样算法对相空间的搜索效率较低,因为我们使用所谓的重要性抽样,即 Important Sampling。 |
8楼2010-09-09 20:25:17
yahoohoo
铁杆木虫 (著名写手)
- 模拟EPI: 10
- 应助: 0 (幼儿园)
- 贵宾: 1.55
- 金币: 7632.4
- 散金: 251
- 红花: 4
- 帖子: 1176
- 在线: 167小时
- 虫号: 74894
- 注册: 2005-06-15
- 性别: GG
- 专业: 理论和计算化学
★ ★ ★ ★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
ghcacj(金币+8):谢谢 2010-09-09 22:47:00
小木虫(金币+0.5):给个红包,谢谢回帖交流
ghcacj(金币+8):谢谢 2010-09-09 22:47:00
|
这个帖子引申出的一个问题就是Monte Carlo模拟中伪随机数生成器 ( Pseudo Random Number Generator ) 的选择问题。 其实Pi的计算这一实例便可以用来检验我们选择的PRNG是否合适。使用一个好的PRNG,随着MC循环次数的增大,估计值应该越来越逼近真实值。 另一个检验PRNG质量的简单方法是:在单位立方体内产生大量的随机点(x, y, z),检查点在三位空间的分布情况,如果明显出现有序的结构,那该PRNG则不适合用于MC模拟。 |
9楼2010-09-09 21:46:47

10楼2010-09-11 10:25:56







回复此楼
