0

104 文字の長さの特定の一連のシーケンスの順列を実行しています。私はシーケンスを生成するために plinq を使用していましたが、ランダムな順序がないと、結果が選択できるほど複雑になることはありません。

問題は、rnd.next と guid.newguid の orderby がメモリをいっぱいにし、結果を返さないことです。

C#でlinqパターンからランダムに選択する解決策はありますか?

var query = 
             from sp1 in polar
                    ...
             from vp15 in polar                           
             where GetCompressionRatio(sp1+...+vp15)>1.5
             orderby rnd.Next(0, 100000000) * rnd.Next(0, 100000000)
             select sp1+...+vp15;


foreach (var element in query)
{
    //output
}
4

1 に答える 1

1

同じクエリで2つの非常に異なる問題を解決しようとしています。賢い方法があったとしても、一歩ずつ進んでいくことをお勧めします。

まず、非ランダム順列を生成します。それよりも、前の結果にランダム置換アルゴリズムを適用します。非常にシンプルなクヌースシャッフルを試すことができます。

あなたの意図ははるかに明確になり、分解はテストとデバッグにおいて大きな利点をもたらすことができます。

于 2012-08-25T19:22:07.347 に答える