在matlab中增加montecarlo的值
我想在matlab中实现monte carlo算法,其方式与我在其他任何地方看到的略有不同。 我有一个工作示例,其中我生成了1000个点的向量,并由此计算pi。 现在我想要一个模型,在这个模型中,我可以为同一个示例添加额外的点 这是我目前的代码:在matlab中增加montecarlo的值,matlab,montecarlo,Matlab,Montecarlo,我想在matlab中实现monte carlo算法,其方式与我在其他任何地方看到的略有不同。 我有一个工作示例,其中我生成了1000个点的向量,并由此计算pi。 现在我想要一个模型,在这个模型中,我可以为同一个示例添加额外的点 这是我目前的代码: a=rand(1000,1); %initial random vectors b=rand(1000,1); n=1000; m=0; %Number of points inside circle while true x1=a-0.5;
a=rand(1000,1); %initial random vectors
b=rand(1000,1);
n=1000;
m=0; %Number of points inside circle
while true
x1=a-0.5;
y1=b-0.5; %cirle has centre at (0.5,0.5)
r=x1.^2+y1.^2;
for i=1:n
if r(i)<=0.25
m=m+1;
end
end
pi=m/(0.25*n);
a=rand(1000,1);
b=rand(1000,1);
n=n+1000;
pause(1);
end
a=rand(1000,1);%初始随机向量
b=兰特(1000,1);
n=1000;
m=0;%圆内的点数
虽然是真的
x1=a-0.5;
y1=b-0.5;%漩涡中心位于(0.5,0.5)
r=x1.^2+y1.^2;
对于i=1:n
如果r(i)问题在for循环的范围内。每次从1
到n
,但是r
在循环中每次只有1000个条目(大小为a
和b
)。由于n==1000
和numel(r)==1000
,这将不是第一次通过循环时的问题,但在过程中,n
增加到2000、3000等,这超过了r
的大小
您需要更改for循环,以便只从1
转到numel(r)
k=1时的:努梅尔(r)
如果r(k)问题在for循环的范围内。每次从1
到n
,但是r
在循环中每次只有1000个条目(大小为a
和b
)。由于n==1000
和numel(r)==1000
,这将不是第一次通过循环时的问题,但在过程中,n
增加到2000、3000等,这超过了r
的大小
您需要更改for循环,以便只从1
转到numel(r)
k=1时的:努梅尔(r)
如果r(k)
for k = 1:numel(r)
if r(k) <= 0.25;
m = m + 1;
end
end
m = m + sum(r <= 0.25);