介绍蒙特卡诺近似的例子代码

  1. #include<fstream>
  2. #include<iostream>
  3. #include<cstdlib>
  4. #include<cstdio>
  5. #include<string>
  6. #include<ctime>
  7. #include<memory>
  8. using std::ifstream;
  9. using std::ofstream;
  10. using std::string;
  11. using std::cout;
  12. using std::endl;
  13. using std::ios;
  14. using std::unique_ptr;
  15. double randx()
  16. {
  17. return rand() % / (double);
  18. }
  19.  
  20. int main(void)
  21. {
  22. ifstream ifs("D:/tex.pbm");
  23. string header;
  24. uint32_t w, h, l;
  25. ifs >> header;
  26. ifs >> w >> h >> l;
  27. cout << "w: " << w << " ,h: " << h << " ,l: " << l << endl;
  28. ifs.ignore();
  29. unsigned char* pixles = new unsigned char[w * h * ];
  30. ifs.read((char*)pixles, w * h * );
  31.  
  32. int nsamples = ;
  33. srand(time());
  34. float avgr = , avgg = , avgb = ;
  35. float sumr = , sumg = , sumb = ;
  36. for (int i = ; i < nsamples; i++)
  37. {
  38. float x = randx() * w;
  39. float y = randx() * h;
  40. int n = ((int)(y * w) + int(x)) * ;
  41. sumr += pixles[n];
  42. sumg += pixles[n + ];
  43. sumb += pixles[n + ];
  44. }
  45. sumr /= nsamples;
  46. sumg /= nsamples;
  47. sumb /= nsamples;
  48. for (int i = ; i < h; i++)
  49. {
  50. for (int j = ; j < w; j++)
  51. {
  52. int n = (i * w + j) * ;
  53. avgr += pixles[n];
  54. avgg += pixles[n + ];
  55. avgb += pixles[n + ];
  56. }
  57. }
  58. avgr /= w * h;
  59. avgg /= w * h;
  60. avgb /= w * h;
  61.  
  62. printf("Average: %0.2f %0.2f %0.2f \n", avgr, avgg, avgb);
  63. printf("Aproximation: %0.2f %0.2f %0.2f \n", sumr, sumg, sumb);
  64. delete pixles;
  65.  
  66. system("pause");
  67. return ;
  68. }

蒙特卡诺近似与PBM的更多相关文章

  1. R语言与正态性检验

    1.Kolmogorov-Smirnov正态性检验 Kolmogorov-Smirnov是比较一个频率分布f(x)与理论分布g(x)或者两个观测值分布的检验方法,若两者间的差距很小,则推论该样本取自某 ...

  2. 蒙特罗卡π算法(C++语言描述)

    圆的面积计算公式为:S=π*r*r 将圆放到一个直角坐标系中,如图黄色部分的面积是S/4=(π*r*r)/4;如果我们将取一个单位圆,则S/4=π/4. 因为是单位圆,半径为1,所以图中红色正方形的面 ...

  3. WPF弹出带蒙板的消息框

    效果图 思路 拿到父级窗体的内容,放入一个容器里,再在容器里放入一个半透明层.将整个容器赋给父级窗体的内容. 关闭时反向操作. 代码 消息窗弹出时 /// <summary> /// 弹出 ...

  4. 设置 tableview 的背景颜色,总是有蒙层

    1.给tableview添加了背景图片后, cell 总是有一层蒙层蒙着,很阴暗. 2.实验以后才发现背景图片被放在了 cell 的后面.

  5. 长文丨papi、咪蒙、罗胖之后,内容创业的机会在哪儿

    一.内容的一年 app死了,内容永生! 2016年,创业圈画风突变,昨天还在激辩java和PHP谁更好的技术宅们.还在梦想着成为第二个乔布斯改变世界的产品狗们.还在忽悠着用O2O横扫传统行业的小老板们 ...

  6. Replication的犄角旮旯(六)-- 一个DDL引发的血案(上)(如何近似估算DDL操作进度)

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  7. 蒙特·卡罗算法的Python实现

    一 背景 此算法诞生的背景是: 曼哈顿计划,有极大的计算需求. 计算机刚开始发展,最适合做计算. 蒙特卡洛算法理论基础是概率论,实际就是暴力计算逼近理想结果.正是在以上两个背景下,它刚好得到了极大的应 ...

  8. PRML读书会第十章 Approximate Inference(近似推断,变分推断,KL散度,平均场, Mean Field )

    主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:02:04 我们在前面看到,概率推断的核心任务就是计算某分布下的某个函数的期望.或者计算边缘概率分布.条件 ...

  9. CSU 1328: 近似回文词

    省赛的A题...现场都没什么人做...其实就一暴力水题......坑死了... 1328: 近似回文词 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1 ...

随机推荐

  1. error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler op

    caffe c++11编译问题 问题:error: #error This file requires compiler and library support for the ISO C++ 201 ...

  2. jsp篇 之 EL表达式

    EL表达式: 形式:${ } 作用:从一个[范围对象里面取值]或者从一个对象中取值或是向页面输出值. 之前我们使用<% ... %>等形式,并不够简洁. 例如: <% request ...

  3. 进程初识和multiprocessing模块之Process

    一.什么是进程 进程就是运行中的程序 进程是操作系统中最小的资源分配单位 进程与进程之间的关系 : 数据隔离的 进程的id:Process id = pid pid是一个全系统唯一的对某个进程的标识, ...

  4. java编译过程(字节码编译和即时编译)

    Javac编译与JIT编译 简介: 编译包括两种情况: 1,源码编译成字节码 2,字节码编译成本地机器码(符合本地系统专属的指令) 解释执行也包括两种情况: 1,源码解释执行 2,字节码解释执行 解释 ...

  5. 初识并发编程 MPI

    MPI是一个跨语言的通讯协议,用于并发编程.MPI标准定义了一组具有可移植性的编程接口. 安装环境 MPICH 是开源的消息传递接口(MPI)标准的实现. 下载地址 # 解压文件 tar -xzvf ...

  6. hdu 3480 Division(四边形不等式优化)

    Problem Description Little D is really interested in the theorem of sets recently. There’s a problem ...

  7. yii2 redirect重定向

    redirect使用方法 $this->redirect(array('/site/contact','id'=>12)); //http://www.kuitao8.com/testwe ...

  8. 【gdoi2018 day2】第二题 滑稽子图(subgraph)(性质DP+多项式)

    题目大意 [gdoi2018 day2]第二题 滑稽子图(subgraph) 给你一颗树\(T\),以及一个常数\(K\),对于\(T\)的点集\(V\)的子集\(S\). 定义\(f(S)\)为点集 ...

  9. MySQL_列值为null对索引的影响_实践

    一.首先看一个我在某公众号看到的一个关于数据库优化的举措 二.如果where子句中查询的列执行了 “is null” 或者 “is not null” 或者 “<=> null” 会不会使 ...

  10. Visual Studio图形调试器详细使用教程(基于DirectX11)

    前言 对于DirectX程序开发者来说,学会使用Visual Studio Graphics Debugger(图形调试器)可以帮助你全面了解渲染管线绑定的资源和运行状态,从而确认问题所在.现在就以我 ...