Генерация чисел с повторением их в массиве не более двух раз - C#
Формулировка задачи:
написал код, который рандомит числа в массиве так, чтобы они повторялись только 2 раза, но они почему-то идут друг за другом, например, 1 1 18 18 15 15 и т.д.
public class Seq { public void CreateSequence() { //заканчиваем создания массива for (int i = 0; i < Sequence.Count(); i++) Sequence[i] = new int[8]; //рандомим числа массива(каждое число должно повторяться не более 2 раз) for (int i = 0; i < Sequence.Count(); i++) for (int j = 0; j < Sequence[i].Count(); j++) { bool flag = false; while (!flag) { int Schet = 0; Random rand = new Random(); Sequence[i][j] = rand.Next(1, 21); for (int u = 0; u < Sequence.Count(); u++) for (int z = 0; z < Sequence[i].Count(); z++) if (Sequence[i][j] == Sequence[u][z]) Schet++; if (Schet > 2) flag = false; else flag = true; } } } public int this[int indexI, int indexJ] { get { return Sequence[indexI][indexJ]; } set { Sequence[indexI][indexJ] = value; } } int[][] Sequence = new int[5][]; }
Решение задачи: «Генерация чисел с повторением их в массиве не более двух раз»
textual
Листинг программы
static int[] GetRandomArray(int min, int max, int repeat) { var result = Enumerable.Range(min, (max - min)*repeat).Select(x => x/repeat).ToArray(); var rand = new Random(); for (int i = result.Length - 1; i > 0; i--) { int j = rand.Next(0, i + 1); int tmp = result[i]; result[i] = result[j]; result[j] = tmp; } return result; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д