簡體   English   中英

很大列表排序的內存置換隨機linq

[英]memory permutation random linq of very large list orderby

我正在對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
}

您正在嘗試使用同一查詢解決兩個非常不同的問題。 即使有聰明的方法,我還是建議您一次邁出一步。

首先,生成一個非隨機排列。 然后,對先前的結果應用一些隨機置換算法。 您可以嘗試非常簡單的Knuth Shuffle

您的意圖將更加清楚,分解可以為您提供測試和調試方面的顯着優勢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM