使用for循环从均匀分布确定两点之间的距离
如果Xm~uniform(-25,25)、Ym~uniform(-25,25)和r~uniform(0,25)、θ~uniform(0,2π)和Xf=rcosθ,Yf=rsinθ 我想使用for循环创建5000个点(Xm,Ym)和(Xf,Yf)的独立变量,然后计算两点之间的距离。我知道如何计算点之间的距离,但创建5000个(Xm,Ym)和(Xf,Yf)的实现我发现很棘手。以下是我的尝试: 现在对于Xf,Yf,我采用了与Xm,Ym类似的方法使用for循环从均匀分布确定两点之间的距离,r,R,如果Xm~uniform(-25,25)、Ym~uniform(-25,25)和r~uniform(0,25)、θ~uniform(0,2π)和Xf=rcosθ,Yf=rsinθ 我想使用for循环创建5000个点(Xm,Ym)和(Xf,Yf)的独立变量,然后计算两点之间的距离。我知道如何计算点之间的距离,但创建5000个(Xm,Ym)和(Xf,Yf)的实现我发现很棘手。以下是我的尝试: 现在对于Xf,Yf,我采用了与Xm,Ym类似的方法 for (i in 1:5000) { res=c()
for (i in 1:5000)
{
res=c()
repeat{
Xm=runif(1,min=-25,max=25)
Ym=runif(1,min=-25,max=25)
if(Xm**2+Ym**2<=25**2)
res=rbind(res,data.frame(Xm,Ym))
break
{
res=rbind(res,data.frame(Xm,Ym))
}
for (i in 1:5000)
{
res=c()
repeat{
R=runif(1,min=0,max=25)
0=runif(1,min=0,max=2*pi)
Xf=Rcos(0)
Yf=Rsin(0)
Yf=runif(1,min=-25,max=25)
if(Xf**2+Yf**2<=25**2)
res=rbind(res,data.frame(Xf,Yf))
break
{
res=rbind(res,data.frame(Xf,Yf))
}
D=sqrt((Xm-Xf)**2+(Ym-Yf)**2))
for(1:5000中的i)
{
res=c()
重复{
Xm=runif(1,最小值=-25,最大值=25)
Ym=runif(1,最小值=-25,最大值=25)
如果(Xm**2+Ym**2这里是一种无回路的方法:
# Yours data
set.seed(9) # Just for reprodutibility
npoints = 5000
# Vectors with 5000 points
Xm=runif(n = npoints,min=-25,max=25)
Ym=runif(n = npoints,min=-25,max=25)
theta = runif(n = npoints, min = 0, max = 2*pi)
R = runif(n = npoints,min = 0, max = 25)
Xf = R*cos(theta)
Yf = R*sin(theta)
D = sqrt((Xm-Xf)^2+(Ym-Yf)^2)
你真的需要它成为一个循环吗?你可以使用sample()
获得5000个Xm点,或者在相同的runif(n=5000)