答えて
:
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. linq to xml空リスト<string>要素?
- 2. リストのランダム要素の値にアクセスするC#
- 3. レイヤード要素Linq
- 4. XMLにLINQのと要素
- 5. LINQ:すべての要素
- 6. アルゴリズム - 一様ランダム要素リンクリスト
- 7. ランダムな要素(座標)
- 8. リストの要素は
- 9. jQueryサイクル - 複数の要素をランダムにランダム化
- 10. リスト要素hightlight?
- 11. sql:プライマリキーをユニークな要素の別のリストに変更
- 12. Rcppのリストのインデックス要素
- 13. ランダムなLINQ to SQLのレコードが "int"のプライマリキー
- 14. linq:ランダムでオーダー
- 15. リスト要素の汎用クラス
- 16. JSONのEVEL()エラー:要素リスト
- 17. リストのリストから要素を取得
- 18. 要素単位でのLINQのデバッグ
- 19. のLINQ - 問題の選択要素
- 20. 配列要素のLIKEクエリのLINQ
- 21. LINQ c#コレクション内の一意の要素
- 22. LINQ内の別個の要素
- 23. 取得リスト要素
- 24. PHP配列内の要素内のランダムな要素を見つける?
- 25. 要素のマップにリストを変換する→スカラー内のリスト(要素)
- 26. DataContract XMLのデシリアライズ - 同じ要素内の要素とプロパティのリスト
- 27. LINQの投影要素は考え
- 28. Linq to XML - 要素の検索
- 29. フィルター子要素ASP.NET LINQのツーエンティティ
- 30. ページリフレッシュ時に要素をランダム化する
[Linq:Linqを使用してランダムオブジェクトを取得する方法](http://stackoverflow.com/questions/3173718/linq-how-to-get-a-random-object-using-linq) – jfar