2012-12-30 11 views
5

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

+0

Chcesz losowy punkt? – JasonD

+2

Ile jest za dużo? –

+0

Dowolny losowy punkt, o ile jest na jednej z krawędzi. EDYCJA: Wybieram dwa punkty, jeśli to jest istotne. – user1938413

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]; 
    } 
Powiązane problemy