有限制的随机点2D

时间:2019-10-06 14:44:34

标签: c# loops vector random coordinates

我需要生成1000个随机数作为[x,y]坐标。 x的最大值是76,而y的最大值是15。我还制作了Point 2D类,该类应读取X和Y坐标并执行一些数学方程式(该类称为Punkt2D,并且使用X和Y表示距离.X和distance.Y来计算)。

现在我只能得到0到75之间的1000个随机数。如何将其转换为坐标值?

(kolonner是指列,rade mens行和nummer mens号)。

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 :(得分:0)

我看到了两种生成随机点的方法。假设范围为x = {0..M-1}y = {0..N-1}

  1. 创建两个单独的随机数int x = random.Next(M); int y = random.Next(N)。下限为0。请注意,上限是互斥的。因此,MN必须比最大值高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);