C# 超大列表排序基的内存置换随机linq
我正在对一系列104个字符长的序列进行排列。我使用plinq生成序列,但如果没有随机顺序,结果永远不会复杂到可以选择的程度 问题是orderby的rnd.next和guid.newguid会填满内存,并且不会返回任何结果 在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
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,乘以相同算法生成的随机数不会改善随机性。。。