2010-01-28 8 views

답변

1

나는 이것이 가장 좋은 방법이라고 생각합니다. 쿼리를 실행하고 결과를 IList로 가져옵니다. 반환 된리스트는 (적어도 임베디드 모드에서) 객체를 느리게로드하므로 인덱스로 무작위 객체를 선택할 수 있습니다. 이 같은

뭔가 :

public static ICollection<T> RandomObjects<T>(IList<T> objectSet, int amount) 
    { 
     var resultSet = new HashSet<T>(); 
     var random = new Random(); 
     amount = Math.Min(objectSet.Count, amount); 
     while (resultSet.Count<amount) 
     { 
      resultSet.Add(objectSet[random.Next(amount)]); 
     } 
     return resultSet; 
    } 

그리고 그것을 사용 :

IList<Person> potentialObjects = container.query(Person.class); 
    ICollection<Person> randomObject = RandomObjects(potentialObjects,10); 

또 다른 가능성은 무작위로 일치하는 LINQ-쿼리를 작성하는 것입니다. 그러나 이러한 쿼리는 최적화 할 수 없으므로 잘못 수행 될 수 있습니다.

var random = from Person p in dbc 
      where new Random().Next(2) == 1 
      select p; 

편집 : 어떤 언어로 C#