研究生期间看过很多Monte-Carlo的东西,还根据这个写了一篇小论文,单纯粹是应付毕业任务,到毕业之后我都弄不清楚Monte-Carlo是什么玩意~~只会吹吹牛逼,说我弄过那玩意,其实不然

最近水怪蜀山忽然说他要搞搞MC,我一时心血来潮,心想我自己看了那么就的MC,就是弄不懂起码也得有点感觉吧,然后翻出Global illumination,专门用公司的打印机打出MC这一章,小有启发,赶紧再次记下,省的回头又还给他。

首先先弄懂Monte-Carlo他解决了一个什么问题?为什么需要Monte-Carlo?

我们知道在计算机图形学就是为了能够更好的反应现实世界,要想呈现出更好图像必须计算光照-光照强度等等,此时就会有一系列的积分方程,通过高等数学只是可能很快的就能计算出他的积分值,但是计算机只能处理离散的量,只能通过采样然后取有限的采样点进行计算来近似这个积分值-----Monte-Carlo应运而生。

蒙特卡洛方法或称随机模拟方法,是一种基于“随机数”的计算方法。看Global Illumination中写道" Consider a problem that must be solved, for example, computing the value of the integration of a function with respect to an appropriately defined measure over a domain. The Monte Carlo approach to solving this problem would to define a random variable such that the expected value of that random variable would be the solution to the problem.”由此可以看出Monte-Carlo就是解决一些积分问题。

要想弄明白Monte-Carlo,要会概率论的那些知识(Expected value期望、Variance方差、Standard Deviation)再次就不一一解释了。给我最大启发的还是下面这几句话:

"In summary, a Monte Carlo estimator for an integral is.

The variance of this estimator is

Mote Carlo integration is a powerful, general technique that can handle arbitrary functions. A Monte Carlo computation consists of the following steps:

  1. Sampling according to a probability distribution function.
  2. Evaluation of the function at that sample.
  3. Averaging these appropriately weighted sampled values

The user only needs to understand how to do the above three steps to be able to use Monte Carlo techniques.

上面几句话无异于画龙点睛之笔,深刻的说明了采用Monte-Carlo方法时的步骤:

  1. 根据一个概率分布函数进行取样。
  2. 使用这些采样点对要积分的函数进行评估。
  3. 根据某些权重对采样点进行处理计算。

好,就到这儿吧,这也只是对Monte-Carlo的一个初步解释,还有很多需要注意的地方比方说采样的方法、减小方差的方法等等,容后再议。

转载于:https://www.cnblogs.com/cg_ghost/archive/2011/10/13/2211045.html

扯淡Monte-Carlo(一)相关推荐

  1. 如何用R进行蒙特卡罗模拟(Monte Carlo Simulation with R)

    本文所讲的蒙特卡罗模拟是建立在正态分布的基础上.假设我们给定一只股票的初始价格P0, 并且从历史日度数据估计出该股票的每日期望回报率为 mean.logret, 标准差为sd.logret. ( 在估 ...

  2. 蒙特卡洛积分(Monte Carlo Integration)应用:利用蒙特卡洛积分生成 McBeth表

    蒙特卡洛积分(Monte Carlo Integration)应用 蒙特卡洛积分 通常函数f(x)的积分: 可以解释为计算函数曲线下方的面积: 而我们的蒙特卡洛积分则是通过近似的方式来获取一个函数的积 ...

  3. Monte Carlo Method

    Reference: Jonathan Pengelly, Monte Carlo Methods, 2002 Basic Description MC为许多数学上难以解决的问题通过运行统计采样实验提 ...

  4. ADPRL - 近似动态规划和强化学习 - Note 10 - 蒙特卡洛法和时序差分学习及其实例 (Monte Carlo and Temporal Difference)

    Note 10 蒙特卡洛法和时序差分学习 Monte Carlo and Temporal Difference 蒙特卡洛法和时序差分学习 Note 10 蒙特卡洛法和时序差分学习 Monte Car ...

  5. 强化学习(四) - 蒙特卡洛方法(Monte Carlo Methods)及实例

    强化学习(四) - 蒙特卡洛方法(Monte Carlo Methods)及实例 4. 蒙特卡洛方法 4.1 蒙特卡洛预测 例4.1:Blackjack(21点) 4.2 动作价值的蒙特卡洛估计 4. ...

  6. [matlab]Monte Carlo模拟学习笔记

    理论基础:大数定理,当频数足够多时,频率可以逼近概率,从而依靠概率与$\pi$的关系,求出$\pi$ 所以,rand在Monte Carlo中是必不可少的,必须保证测试数据的随机性. 用蒙特卡洛方法进 ...

  7. CSAPP第五章就在“扯淡”!

    "你的时间有限,所以不要为别人而活.不要被教条所限,不要活在别人的观念里.不要让别人的意见左右自己内心的声音.最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实 ...

  8. 蒙特卡罗(Monte Carlo)方法

    蒙特卡罗(Monte Carlo)方法,也称为计算机随机模拟方法,是一种基于"随机数"的计算方法.          一 起源 这一方法源于美国在第二次世界大战进研制原子弹的&qu ...

  9. Monte Carlo概率模型进行分子动力学模拟并计算苯甲醚键值

    本文继续通过用神经网络给分子建模并比较数值,这次计算苯甲醚,这是一种强邻对位基团,分子模型如下 计算得到的数据 与前面的数据比较 * NN二甲基苯胺 N甲基苯胺 苯胺 苯酚 苯甲醚 硝基苯 左邻位 8 ...

  10. Monte Carlo仿真方法的基本思想及其特点

    Monte Carlo仿真方法又称统计试验法,它是一种采用统计抽样理论近似地求解数学.物理及工程问题的方法.它解决问题的基本思想是,首先建立与描述该问题有相似性的概率模型,然后对模型进行随机模拟或统计 ...

最新文章

  1. 使用 Struts2 校验器校验用户注册信息的例子
  2. Balanced Team
  3. Runtime底层原理--动态方法解析、消息转发源码分析
  4. animation动画不生效_SwiftUI动画(1)之Animatable
  5. 一步步学习汇编系列(7)
  6. anaconda学习python_python深度学习笔记1-Anaconda软件安装
  7. 最全整理浏览器兼容性问题与解决方案(转)
  8. 宋体配置JAVA j2ee (一) 轻松入门
  9. 6.王道考研数据结构-栈
  10. 一个简单的登录注册页面html代码
  11. matlab中有非线性模型吗,仿真非线性模型Matlab
  12. python 基础-如何调用函数
  13. flutter app使用大量网络图片导致频繁崩溃
  14. RE管理器4.41、车来了app 去除广告
  15. 做短视频必须要知道的几个视频设置参数,爆款必备。
  16. Embeded linux之网卡驱动
  17. Day16:hash表
  18. Awesome Free ChatGPT(免费的chatgpt镜像网站)
  19. 【面试题】8.Redis相关
  20. 安装 Mongrel

热门文章

  1. 史上第一部程序员专题电影《青春代码》
  2. java计算机毕业设计商院足球赛事管理源码+数据库+系统+lw文档+mybatis+运行部署
  3. 乐播科技java怎样,乐播投屏用不了
  4. Word基本操作之论文格式调整
  5. Java新版本API发送新浪微博可能会出现的问题呢
  6. 甲肾上腺素检测——甲肾上腺素ELISA试剂盒方案
  7. 华为Eudemon防火墙inbound入方向和outbound出方向
  8. 学生综合测评c语言程序设计,C语言程序设计 综合测评系统.doc
  9. Flink等多组件受影响,Apache Log4j曝史诗级漏洞
  10. 区块链开发编程语言整合