Tag: Monte Carlo

R语言入门之 – 如何通过Monte Carlo来计算 PI?

上次开始步入R语言的世界, 感觉R还是挺简洁强大的. 学一门程序最好的办法就是敲代码, 敲例子. 在工作生活中如果遇到需要敲代码的时候就得问问自己能否拿R语言来解决? 这样能更好的进步. 我们都知道圆周率可以通过随机在一个正方形(坐标X/Y均为0到1)撒足够多的点. 统计一下点在1/4的圆内(半径为1)的个数和总的撒点个数 这个值就会很接近 . 因为圆的面积公式为 这种方法也称之为蒙特卡罗方法, 是一种随机, 统计的方法. 我们可以通过 runif 来生成随机的点, 参数指定点的个数, x=runif(100000) y=runif(100000) 每个随机值是在0到1之间的浮点数(也可以指定 min=0,max=1). 然后可以把长度放在另一个向量里: z=sqrt(x^2+y^2) 这时候我们只要统计出这个z数组里小于或等于1的个数即可. R语言里的 which 函数返回了数组里满足条件的 索引值, …

C++ 使用 Parallel For 多线程 计算 圆周率 – Monte Carlo

计算圆周率是个老掉牙的课题. 最为简单的 直接易懂的无非就是通过 Monte Carlo 来随机撒点 然后 计算 在圆内的点和总共的点数的比例再乘于4就能得到一个估计的值. 当然随机数的产生一定要质量好 虽然计算机没有真正的随机算法 但是一些 伪随机 算法 比如 xorshift 就很不错. 单机版本的计算 简单明了. int monte_carlo_count_pi(int n) { int c = 0; for (int …