Случайная точка 2D с ограничениями - PullRequest
0 голосов
/ 06 октября 2019

Мне нужно сгенерировать 1000 случайных чисел в виде [x, y] координат. Наибольшее значение x - 76, а для y - 15. Я также создал класс Point 2D, который должен читать координаты X и Y и выполнять некоторые математические уравнения (класс называется Punkt2D, и он использует X и Y как расстояние.X и distance.Y для расчета).

На данный момент я получаю только 1000 случайных чисел от 0 до 75. Как мне превратить его в значения координат?

(kolonner означает столбцы, radermens rows и nummer mens number).

public const int MaxX = 76;
        public const int MaxY = 15;
        public const int min = 0;
        public const int rader = 1000;
        public const int kolonner = 2;

        public static void Main(string[] args)
        {
            Random r = new Random();
            int[,] nummer = new int[kolonner,rader];
            for (int m = 0; m < kolonner; m++)
            {
                for (int n = 0; n < 1000; n++)
                {
                    nummer[m,n] = r.Next(0,MaxX);
                    Console.WriteLine(Convert.ToString(nummer[m, n]));
                }
            }
        }

Я также начал этот метод здесь, где я удалил петли.

int row = r.Next(nummer.GetLength(0));
            int column = r.Next(nummer.GetLength(1));
            int randomNummer = nummer[row, column];
            Console.WriteLine(Convert.ToString(nummer));

Заранее спасибо.

1 Ответ

0 голосов
/ 06 октября 2019

Я вижу два способа генерации случайных точек. Давайте предположим, что диапазоны x = {0..M-1} и y = {0..N-1}

  1. Создадим два отдельных случайных числа int x = random.Next(M); int y = random.Next(N). Нижняя граница 0. Обратите внимание, что верхняя граница является эксклюзивной. Поэтому M и N должны быть на 1 выше, чем максимальные значения. Они представляют количество возможных значений вдоль одной оси (количество пикселей на изображении).

    const int M = 77, Y = 16; // Gives range of { 0..76, 0..15 }.
    
  2. Создайте одно случайное значение int r = random.Next(M * N);, а затем получите координаты с int x = r % M; int y = r / M; (% - оператор по модулю, дающий остаток от деления).

Вы можете получить очко с помощью:

var p = new Point(x, y);
...