используя a для l oop, чтобы определить расстояние между двумя точками из равномерного распределения - PullRequest
0 голосов
/ 19 марта 2020

Если Xm ~ равномерный (-25,25), Ym ~ равномерный (-25,25) и r ~ равномерный (0,25), θ ~ равномерный (0,2π) и Xf = rcosθ, Yf = rsinθ.

Я хочу использовать a для l oop, чтобы создать 5000 независимых переменных точек (Xm, Ym) и (Xf, Yf), а затем рассчитать расстояние между двумя точками. я знаю, как рассчитать расстояние между точками, но создавая 5000 реализаций (Xm, Ym) и (Xf, Yf), я нахожу хитрым. вот моя попытка:

Теперь для Xf, Yf я применил аналогичный подход к Xm, Ym

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))

1 Ответ

1 голос
/ 19 марта 2020

Вот подход без l oop:

# 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...