목록에서 임의의 항목 선택 C # OOP [중복]

Dec 29 2020

두 가지 방법이 있습니다. 첫 번째 항목에서는 Persons라는 목록에 항목을 추가합니다. 두 번째에서는 목록 (Persons)에서 임의의 항목을 선택하고 목록에서 그 사람의 이름을 반환해야합니다.

이 작업을 수행하는 방법을 잘 모르겠습니다. 난수와 임의의 문자 생성을 시도했지만 목록과 함께 사용하는 방법을 이해할 수 없습니다.

어떤 도움이라도 대단히 감사하겠습니다! 미리 감사드립니다

static void PopulatePersons()
        {
            Person Bill = new Person("Bill", "no", "brown", 'm');
            Person Eric = new Person("Eric", "yes", "brown", 'm');
            Person Robert = new Person("Robert", "no", "blue", 'm');
            Person George = new Person("George", "yes", "brown", 'm');
            Person Herman = new Person("Herman", "no", "green", 'm');
            Person Anita = new Person("Anita", "no", "blue", 'f');
            Person Maria = new Person("Maria", "yes", "green", 'f');
            Person Susan = new Person("Susan", "no", "brown", 'f');
            Person Claire = new Person("Claire", "yes", "brown", 'f');
            Person Anne = new Person("Anne", "no", "brown", 'f');

            Persons = new List<Person>() 
            { Bill, Eric, Robert, George, Herman, Anita, Maria, Susan, Claire, Anne };            
        }

        static Person GetRandomPerson()
        {
            PopulatePersons();
        }

답변

2 MestreDosMagros Dec 29 2020 at 07:40

Random 클래스를 사용하여 목록 크기 범위 내에서 임의의 정수를 생성 할 수 있습니다. 예는 다음과 같습니다.

public class Program
{
    public static void Main()
    {
        var persons = PopulatePersons();
        var random = new Random();
        var randomPeople = persons.ElementAt(random.Next(0, persons.Count));
        Console.WriteLine(randomPeople.Name);
    }
    
    public static List<Person> PopulatePersons()
        {
            Person Bill = new Person("Bill");
            Person Eric = new Person("Eric");
            Person Robert = new Person("Robert");
            Person George = new Person("George");
            Person Herman = new Person("Herman");
            Person Anita = new Person("Anita");
            return new List<Person>() { Bill, Eric, Robert, George, Herman, Anita };            
        }
    
    public class Person 
    {
        public Person(string name)
        {
            Name = name;
        }
        
        public string Name {get;set;}
    }
}
2 DavidB Dec 29 2020 at 07:44

당신이 찾고있는 것은 :

 var person = PopulatePersons.Persons[yourRandomNumber];

따라서 방법은 다음과 같아야합니다.

 static Person GetRandomPerson()
    {
      Random rndPerson= new Random();
      int rndNumber = rnd.Next(0, PopulatePersons.Pesrons.Count);
       return PopulatePersons.Persons[rndNumber];
    }