Mam więc wysokość mapy i jako część mojego algorytmu generowania rzeki chcę wybrać dwa punkty, o ile są częścią jednej z krawędzi tablicy. Wydaje się to być prostym zadaniem, ale nie mogę wymyślić rozwiązania, które nie wymaga zbyt wiele instrukcji. Czy istnieje sposób wybierania z krawędzi tablicy 2d? (IE, x = 0
lub x = max
lub y = 0
lub y = max
)Jak wybierać punkty tylko na krawędziach tablicy 2d
5
A
Odpowiedz
2
Można zrobić tablicę z wszystkich indeksów krawędziowych jak (0,10) i umieścić je wszystkie w jednej tablicy, teraz można po prostu wybrać jeden lub więcej im.
+0
Jedna rzecz, która nie jest związana z pytaniem: Zapisujesz lepsze wyniki losowo, jeśli rozciągasz losowy zakres do N razy długości tablicy i używasz modulo, aby uzyskać punkt w zakresie. Normalnie używam 7 jako multipikatora. –
2
Tylko nowości, oto sposób z tym, który nie wymaga przechowywania wszystkich indeksów lub jakiekolwiek if() blokuje:
static void randPoint(int width, int height, out int x, out int y, Random r)
{
int[] dim = {width,height};
int[] res = new int[2];
res[0] = r.Next(0, 2) * (width - 1);
res[1] = r.Next(0, 2) * (height - 1);
int hv = r.Next(0, 2);
res[hv] = r.Next(0,dim[hv]);
x = res[0];
y = res[1];
}
Chcesz losowy punkt? – JasonD
Ile jest za dużo? –
Dowolny losowy punkt, o ile jest na jednej z krawędzi. EDYCJA: Wybieram dwa punkty, jeśli to jest istotne. – user1938413