永发信息网

一,利用Matlab或C++等计算机语言验证以下两题中任意其中一题的结论 (a)甲、乙两人相约在 0 到 T 这段时

答案:2  悬赏:0  手机版
解决时间 2021-12-01 09:25
  • 提问者网友:ミ烙印ゝ
  • 2021-11-30 15:11
一,利用Matlab或C++等计算机语言验证以下两题中任意其中一题的结论 (a)甲、乙两人相约在 0 到 T 这段时
最佳答案
  • 五星知识达人网友:街头电车
  • 2021-11-30 15:37
function [p0,pm,pival] = BuffonMonteCarlo(d,h,N)
% 蒲丰投针问题
% pivalue = BuffonMonteCarlo(d,h,N),求蒲丰投针问题中针与任一平行线相交的理论
% 概率p0,基于蒙特卡洛方法的模拟概率pm,圆周率pi的模拟值pival. 输入参数d为相邻
% 两条平行线的间距,h为针的长度,N为模拟投针的次数.

% 判断针的长度h与相邻平行线的间距d是否满足指定条件
if h >= d
error('针的长度应小于相邻平行线的间距')
end
p0 = 2*h/(d*pi); % 计算针与任一平行线相交的理论概率
x = 0;y = 0; % 赋变量初值
m = length(N); % 求变量N的长度
pm = zeros(1,m); % 赋变量初值
pival = pm; % 赋变量初值
% 通过循环求基于蒙特卡洛方法的模拟概率pm和圆周率pival
for i = 1:m
x = pi*rand(N(i),1); % 产生[0,pi]上均匀分布随机数
y = d*rand(N(i),1)/2; % 产生[0,d/2]上均匀分布随机数
yb = h*sin(x)/2;
pm(i) = sum(y <= yb)/N(i); % 求模拟概率
pival(i) = 2*h*N(i)/(d*sum(y <= yb)); % 求圆周率的模拟值
end
全部回答
  • 1楼网友:十年萤火照君眠
  • 2021-11-30 16:22
看不懂
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯