2012-12-30 21 views
5

Vì vậy, tôi có một sơ đồ chiều cao float[,] và như một phần của thuật toán tạo sông của tôi, tôi muốn chọn hai điểm miễn là chúng là một phần của một trong các cạnh của mảng. Điều này có vẻ là một nhiệm vụ đơn giản, nhưng tôi dường như không thể nghĩ ra một giải pháp không liên quan đến quá nhiều câu lệnh. Có cách nào để chọn từ các cạnh của một mảng 2d? (IE, x = 0 hoặc x = max, hoặc y = 0 hoặc y = max)Cách chọn Chỉ các điểm ở các cạnh của mảng 2d

+0

Bạn muốn có một điểm ngẫu nhiên? – JasonD

+2

Có bao nhiêu là quá nhiều? –

+0

Bất kỳ điểm ngẫu nhiên nào miễn là trên một trong các cạnh. EDIT: Tôi sẽ chọn hai tổng số điểm, nếu điều đó có liên quan. – user1938413

Trả lời

2

Bạn có thể tạo ra một mảng với tất cả các cạnh indicies tương tự (0,10) và đặt tất cả trong số họ trong một mảng, bây giờ bạn chỉ có thể chọn một hoặc nhiều chúng.

+0

Một điều không liên quan đến câu hỏi: Bạn lưu trữ kết quả tốt hơn một cách ngẫu nhiên nếu bạn kéo giãn phạm vi ngẫu nhiên thành N lần chiều dài mảng và sử dụng modulo để lấy một điểm trong phạm vi. Tôi normaly sử dụng 7 như multipicator. –

2

Chỉ cần cho mới lạ, đây là một cách để làm việc đó mà không liên quan đến lưu trữ tất cả các chỉ số, hoặc bất kỳ nếu) khối (:

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]; 
    } 
Các vấn đề liên quan