C# 超大列表排序基的内存置换随机linq

C# 超大列表排序基的内存置换随机linq,c#,linq,parallel-processing,sql-order-by,permutation,C#,Linq,Parallel Processing,Sql Order By,Permutation,我正在对一系列104个字符长的序列进行排列。我使用plinq生成序列,但如果没有随机顺序,结果永远不会复杂到可以选择的程度 问题是orderby的rnd.next和guid.newguid会填满内存,并且不会返回任何结果 在C语言中,从linq模式中随机选择有什么解决方案吗 var query = from sp1 in polar ... from vp15 in polar

我正在对一系列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
}

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

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


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

问题1:您在查询之前声明了rnd,例如:Random rnd=new Random;对吗?问题2:您是想从linq生成的列表中随机选择,还是想从linq返回的随机列表中随机选择?问题3:guid.newguid会填满内存,不会返回任何结果,guid.newguid到底在哪里?guid不是最好的排序依据…我看不出rnd.Next在这种情况下不起作用的任何原因,您可以共享完整的linq查询代码吗?另外,只需使用rnd。Next没有上限,也没有Next乘以Next,乘以相同算法生成的随机数不会改善随机性。。。