【问题标题】:Random point 2D with limits有限制的 2D 随机点
【发布时间】:2019-10-06 14:44:34
【问题描述】:

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

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

(kolonner 表示列,rader mens 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));

提前致谢。

【问题讨论】:

  • “转成坐标值”是什么意思?您的坐标值是否有小数位,或者您只是希望它能够选择负数?
  • int[,] 是错误的数据类型,您需要一个元组 并使用 new tuople
  • List&lt;Point&gt; 也可以。

标签: c# loops vector random coordinates


【解决方案1】:

我看到了两种生成随机点的方法。让我们假设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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    相关资源
    最近更新 更多