Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab中增加montecarlo的值_Matlab_Montecarlo - Fatal编程技术网

在matlab中增加montecarlo的值

在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;

我想在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;
  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);