Как работает этот код? - C#
Формулировка задачи:
Добрый день!
У меня стоит подзадача - сделать 3 разные строки intовских элементов.
Я написал незамысловатый код, который у меня работает не верно и я не знаю как его исправить.
Вместо 3 разных строк он выдаёт 3 одинаковые.
Можете пояснить мне - в чем ошибка?
namespace NQV3 { class Program { static void Main(string[] args) { //Создаём 3 экземпляра класса, в каждом должна быть стока из 8 элементов Solution work = new Solution(8); Solution current = new Solution(8); Solution best = new Solution(8); work.ToMonitor(); current.ToMonitor(); best.ToMonitor(); Console.ReadLine(); } } public class Solution { private int[] sol; private int energy; Random rand = new Random(); public int[] Sol { get { return sol; } } public int Energy { get { return energy; } } //Конструктор класса public Solution(int Max) { //Создаётся одномерная матрица sol = new int[Max]; //Она же перемешивается sol = Tweak(sol); } //Метод перемешивания //Числа не должны повторяться public int[] Tweak(int[] sol) { //Заполняем числами от 0 до 7 for (int i = 0; i < sol.Length; i++) { sol[i] = i; } //Берем 2 рандомных числа и меняем их местами 8 раз for (int i = 0; i < sol.Length; i++) { int temp1 = rand.Next(0, sol.Length); int temp2 = rand.Next(0, sol.Length); int temp3; temp3 = sol[temp1]; sol[temp1] = sol[temp2]; sol[temp2] = temp3; } return sol; } //Метод вывода на экран как одномерная и как двумерная матрицы public void ToMonitor() { for (int i = 0; i < sol.Length; i++) { Console.Write(" {0} ", sol[i]); } Console.WriteLine("\n"); for (int i = 0; i < sol.Length; i++) { for (int j = 0; j < sol.Length; j++) { if (j == sol[i]) { Console.Write("|Q|"); } else { Console.Write("|0|"); } } Console.WriteLine("\n"); } } } }
Решение задачи: «Как работает этот код?»
textual
Листинг программы
Random rand = new Random(Guid.NewGuid().GetHashCode());
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д