2017-01-01 2 views

Antwort

1

Angenommen, das Zentrum ist (x0, y0) und wir suchen nach einem zufälligen Ort (x, y) mit maximaler Entfernung maxDist von der Mitte. Wir wissen, dass

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

Also zuerst wir einen zufälligen Wert für x in der entsprechenden Abstand dann finden einen zufälligen Wert für y finden:

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

eine Zufallszahl für R zwischen RMax und RMin generieren. Erzeugen Sie eine andere Zahl für Theta zwischen 0 und 360. Verwenden Sie nun die grundlegende Trigonometrie, um in (x, y) zu konvertieren.

Dieser Ansatz scheint mir sehr intuitiv zu sein, da das angegebene Problem grundsätzlich radialsymmetrisch ist. Es gibt Ihnen auch (R, Theta) für alle anderen Berechnungen, die Sie durchführen möchten.

Verwandte Themen