国赛培训——随机化算法——蒙特卡洛模拟

文章目录

二:实例代码

rand(n,m),unifrnd(l,r,n,m)

(1)rand(m,n)函数产生由在[0,1]之间均匀分布的随机数组成的m行n列的矩阵(或称为数组)。
(2)a + rand(m,n)(b-a) 可以输出在[a,b]之间均匀分布的随机数组成的m行n列的矩阵。
eg:-2 + rand(3,2) * (2 - (-2)) -->输出在[-2,2]之间均匀分布的随机数组成的3行2列的矩阵。
(3)a + rand(m,n)
(b-a)等价于unifrnd(a,b,m,n)

2.1 圆周率随机模拟计算

问题:平面上画有等距离为a的一组平行线,向该平面投以长为l(l<a)的针,试求针与平行线相交的概率。
分析:设x为针与最近的一平行线的距离,σ表示针与平行线的夹角,0<x<L/2,0<σ<pi。若使针与平行线相交,一定有x<=L/2sin(σ),因此:p=2L/pi*a=m/n,并通过模拟x和σ得到pi的近似解。
国赛培训——随机化算法——蒙特卡洛模拟


上一篇:新手PytorchTensor笔记 (一)


下一篇:C++中产生概率分布之-均匀分布和标准正态分布