Генерация чисел с повторением их в массиве не более двух раз - 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;
}