非常大列表orderby的存储器排列随机linq



我正在对一系列104个字符长的特定序列进行排列。我使用plinq生成序列,但如果没有随机顺序,结果永远不会复杂到可以选择。

问题是orderby与rnd.next和guid.newguid一起填充内存并且不返回任何结果。

在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
}

您正试图用同一个查询解决两个截然不同的问题。即使有一个聪明的方法,我也建议你一步一个脚印。

首先,生成一个非随机排列。然后,在前面的结果上应用一些随机排列算法。你可以试试非常简单的Knuth Shuffle。

您的意图将更加清晰,分解可以在测试和调试中为您带来显著优势。

最新更新