0
var dd = new Dictionary<Guid, object>(); //readonly in my real code
dd.Add( Guid.NewGuid() , 'a');
dd.Add( Guid.NewGuid() , 'a');
dd.Add( Guid.NewGuid() , 'a');
var randone = dd.ElementAt(new Random(dd.Count()).Next(dd.Count));

可能な限り高速に dd からランダムな値を取得したい (ミリ秒ごとにカウントされる) が、上記のサンプルではそれを行っていないと確信しています。ランダムな KeyValuePair を取得するために、どのように randone をやり直すことができますか? 実際のコードでは、キーは実際には GUID ですが、値はカスタム POCO です。

4

1 に答える 1

2

すべてのキーを a に保持できる場合はList<T>、0 から List.Count までの乱数を選択できます。その番号を使用してリストにインデックスを付け (単純な検索)、それを使用して辞書にインデックスを付けます。

于 2013-10-09T01:19:12.760 に答える