2017-01-01 4 views

答えて

1

中心が(x0、y0)であり、中心から最大距離maxDistのランダムな位置(x、y)を探しているとします。 RMAXとRMINの間にR用の乱数を生成し

int x = random.Next(-1* maxDist, maxDist); 
    int maxY =(int) Math.Floor(Math.Sqrt(maxDist * maxDist - x * x)); 
    int y = random.Next(-1*maxY, maxY); 
    y += y0; 
    x += x0; 
2

: 私たちは、その後、yのランダムな値を見つける

(x-x0)*(x-x0) + (y-y0)+(y-y0) <= maxDist *maxDist 

だから最初に、我々は適切な距離でxのランダムな値を見つけることを知っています。 0と360の間のシータのために異なる番号を生成します。今、(x、y)に変換するために基本三角法を使用してください。

このアプローチは私にとって最も直感的だと思われます。なぜなら、述べたような問題は根本的に放射状に対称的なものだからです。また、他の計算のために(R、Theta)を与えます。

関連する問題