带有限制的随机点2D

问题描述 投票:0回答:1

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

目前,我只获得0到75之间的1000个随机数。如何将其转换为坐标值?

((kolonner表示列,rade男士行和nummer男士人数)。

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));

提前感谢。

c# loops vector random coordinates
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.