答えて
:
var rand = new Random();
var user = users[rand.Next(users.Count)];
の可能な複製注意:実際のコードでは、 'var rand = new Random();'は他の場所で初期化され、一度しかシードされません。このコードが連続して複数回呼び出されると、 'Random'の新しいインスタンスは同じシードを使用して終了し、' Next'を呼び出すときに同じ値を返します。 – Brian
確かに、このランドは静的である可能性があります –
どのようにこのようなものでしょうか?
var users = GetUsers();
var count = user.Count();
var rand = new System.Random();
var randomUser = users.Skip(rand.Next(count)).FirstOrDefault();
'IList
かなり正しいですが、質問の表現方法にはあいまいさがたくさんあります。 – ilivewithian
使用ElementAt
:Entity Frameworkのか、LINQの2 SQLの
var rand = new Random();
var user = users.ElementAt(rand.Next(users.Count()));
、ジェネリックヘルパーおよび/または拡張を作成しないのはなぜ、この拡張メソッド
public static T RandomElement<T>(this IQueryable<T> q, Expression<Func<T,bool>> e)
{
var r = new Random();
q = q.Where(e);
return q.Skip(r.Next(q.Count())).FirstOrDefault();
}
// persons.RandomElement(p=>p.Age > 18) return a random person who +18 years old
// persons.RandomElement(p=>true) return random person, you can write an overloaded version with no expression parameter
を使用することができます!
namespace My.Core.Extensions
{
public static class EnumerableHelper<E>
{
private static Random r;
static EnumerableHelper()
{
r = new Random();
}
public static T Random<T>(IEnumerable<T> input)
{
return input.ElementAt(r.Next(input.Count()));
}
}
public static class EnumerableExtensions
{
public static T Random<T>(this IEnumerable<T> input)
{
return EnumerableHelper<T>.Random(input);
}
}
}
使い方は次のようになります。
var list = new List<int>() { 1, 2, 3, 4, 5 };
var output = list.Random();
Random
クラスは、擬似乱数を生成するために使用することができます。有効なインデックスの範囲内で配列またはリストに乱数を生成するために使用します。
Random rand = new Random();
var user = Users[rand.Next(Users.Count)];
あなたはより多くの例を見たい場合は、私はいくつかのランダムな指向LINQの拡張機能を作成し、記事Extending LINQ with Random Operationsでそれを発表しました。
- 1. リストからランダムな要素
- 2. linq to xml空リスト<string>要素?
- 3. リストのランダム要素の値にアクセスするC#
- 4. jQueryの要素をランダムに
- 5. レイヤード要素Linq
- 6. Linq to SQL、配列要素と別のリストの比較に基づいたリスト構築
- 7. LINQ:以下のリストを与えられた個別の要素
- 8. Linq XML NullReference要素のリストを読み取る際の例外
- 9. GROUPBY()SQLクエリにLINQの中の選択()内の要素を
- 10. LINQ:すべての要素
- 11. XMLにLINQのと要素
- 12. 子要素のLINQ Sumクエリ
- 13. ランダムな要素をリストからサンプリングして削除する
- 14. 確率がリストからランダム要素を選択
- 15. ランダムな要素(座標)
- 16. アルゴリズム - 一様ランダム要素リンクリスト
- 17. マトリックス上のランダム要素の設定値
- 18. db要素のリスト
- 19. Pythonのリスト要素
- 20. リスト要素のフェッチ
- 21. リストの要素は
- 22. ランダムなLINQ to SQLのレコードが "int"のプライマリキー
- 23. F#ランダムな要素のセット<string>
- 24. ランダムな要素ごとの乗算R
- 25. linq:ランダムでオーダー
- 26. リストからN個のランダム要素を選択するためのアルゴリズム C#
- 27. リストの要素の集合を検索するためのC#のLinqクエリ
- 28. C#の2つの要素は、XML LINQ
- 29. LINQ c#コレクション内の一意の要素
- 30. 配列要素のLIKEクエリのLINQ
[Linq:Linqを使用してランダムオブジェクトを取得する方法](http://stackoverflow.com/questions/3173718/linq-how-to-get-a-random-object-using-linq) – jfar