[問題] 依據日期 產出隨機排序

看板C_Sharp作者 (Vi)時間6年前 (2017/10/16 17:37), 6年前編輯推噓0(001)
留言1則, 1人參與, 6年前最新討論串1/1
需求是在前端顯示資料時,想要讓資料隨機排序, 使用者按下下一頁按鈕時,不要顯示重覆資料。 後端的語法類似這樣 someTable.OrderBy(x => Guid.NewGuid()).Skip(pageCount).Take(pageSize) 但這樣當使用者切換分頁時,有可能顯示之前出現過的資料 所以我想了一套演算法,用每天的日期當種子, 開根號後取小數點後面的位數當作排序 產生出每日都會變動的排序 程式碼如圖 https://imgur.com/uX49AQv
程式碼如下 https://dotnetfiddle.net/sjNZAA 我覺得我這演算法有點不夠隨機 本來是要開個Sort欄位 再用排程每日更新排序的 想先研究能不能直接用程式解決這問題 不知道大家有什麼建議呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.218.40.109 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1508146628.A.008.html

10/17 09:51, 6年前 , 1F
問題解決了 改用Fisher–Yates shuffle算法
10/17 09:51, 1F
程式碼 public static IList<T> Shuffle<T>(this IList<T> list, Random random) { for (var i = list.Count; i > 1; i -= 1) { var j = random.Next(i); var temp = list[j]; list[j] = list[i - 1]; list[i - 1] = temp; } return list; } ※ 編輯: vi000246 (61.218.40.109), 10/17/2017 09:52:54
文章代碼(AID): #1Pv7t408 (C_Sharp)