首页 > 解决方案 > 如何为 TSP 生成随机坐标?

问题描述

我是编程新手,我必须生成一个随机游览。在第一步中,我必须生成一个尚未访问的随机索引。但是我不知道如何编写列表,这会给我随机坐标。

这是我到目前为止所拥有的:

class TSP
{
    class Point //Class point that holds a x and y coordinate
    {
        public int X { get; set; }
        public int Y { get; set; }
        public Point(int x, int y)
        {
            X = x;
            Y = y;
        }
        public Point() { }
        public override string ToString()
        {
            return $"Point(X:{X}/Y:{Y})";
        }

    }


    class City
    {
        public static Random rand = new Random();

        public City(int x, int y)
        {
            X = rand.Next();
            Y = rand.Next();
        }


        public double X { get; private set; }

        public double Y { get; private set; }

        public City () { }

        public override string ToString()
        {
            return $"City(X: {X}/Y:{Y})";
        }
    }


    static void Main(string[] args)
    {
        // takes the coordinates from my file 
        List<Point> points = new List<Point>();
        string[] lines = File.ReadAllLines("C:/Users/t/Documents/Coordinates.txt"); 

        for (int i = 6; i < lines.Length; i++)          
        {
            string[] splitLine = lines[i].Split(' ');   
            int x = Convert.ToInt32(splitLine[1]);      
            int y = Convert.ToInt32(splitLine[2]);      
            points.Add(new Point(x, y));
        }
        foreach (Point p in points)
        {
            Console.WriteLine(p);
        }

        // Writes down the random coordinates for new Cites
        List<City> cities = new List<City>();
        for (int i = 3; i < lines.Length; i++)
        {
            string[] splitLine = lines[i].Split(' ');   
            int x = Convert.ToInt32(splitLine[1]);      
            int y = Convert.ToInt32(splitLine[2]);      
            points.Add(new Point(x, y));
            cities.Add(new City(x, y));
        }

        foreach (City c in cities )
        {
            Console.WriteLine(c);
        }
    }
}

我认为我的问题出在主程序中(列表城市 = 新列表();) - 如果我是对的,它在 for 循环中,但我不知道如何以不同的方式写下来。

标签: c#listrandom

解决方案


推荐阅读