Попробуйте этот проверенный и рабочий пример. Если вы запустите этот метод execRandomNumber ();
Вы получите этот вывод ::
Возвращенные цифры: 18
Соответствующие цифры 18
Возвращенные числа 15
Соответствующие числа 15
Возвращенные числа 17
Возвращенные числа 19
Совпадение номеров 19
Возвращенные цифры: 16
Соответствующие цифры 16
Возвращенные цифры: 14
Возвращенные числа 20
Использование директив ::
using System.Collections.Generic;
Объявления ::
public static List<int> lista1 = new List<int>();
public static List<int> returnedRandomList = new List<int>();
public static int[] myArrNums = new[] { 12, 25, 15, 16, 18, 19 };
public static int[] myRandArr = new[] { 14, 15, 16, 17, 18, 19, 20 };
Метод 1 предназначен для генерации случайных чисел ::
private void execRandomNumber()
{
//==============Don't have the numbers but need to generate them?==============
returnedRandomList = Gen(returnedRandomList, null);
returnedRandomList.ForEach(delegate (int num)
{
Console.WriteLine(string.Concat("The numbers returned are ", num));
if (numIsMatch(num) == true)
{
lista1.Add(num);
Console.WriteLine(string.Concat("The numbers matching are ", num));
}
});
//==============Generator will return list of random numbers, then we compared them==============
}
Ваш генератор чисел ::
//==============Your number generator==============
private List<int> Gen(List<int> randGenerator, Random ranNum)
{
ranNum = new Random();
var rn = 0;
returnedRandomList.Clear();
do
{
if (randGenerator.Count == 7)
break;
rn = ranNum.Next(14, 21);
if (!(randGenerator.Contains(rn)) && randGenerator.Count <= 7)
randGenerator.Add(rn);
}
while (randGenerator.Count <= 7);
return randGenerator;
}
А для второго метода, предполагая, что у вас уже есть числа, сгенерированные и сохраненные в списке или массиве чисел, вы можете сделать следующее: *
private void runArgs()
{
//==============Already have the numbers? Loop through them and compare==============
foreach (int i in myRandArr)
{
if (numIsMatch(i) == true)
{
lista1.Add(i);
}
}
lista1.ForEach(delegate (int num)
{
Console.WriteLine(string.Concat("The numbers that match are ", num));
});
}
И для сравнения ваших чисел, чтобы убедиться, что они совпадают, вы можете сделать что-то вроде этого:
//==============Check is numbers are a match==============
private bool numIsMatch(int inValue)
{
foreach (int ii in myArrNums)
{
if (ii.Equals(inValue))
return true;
else
continue;
}
return false;
}
Если у вас есть какие-либо вопросы, я перезвоню вам завтра, потому что сейчас уже довольно поздно. Надеюсь это поможет.