从一个有 100 个文件的文件夹中随机 select 40 个文件

Randomly select 40 files from a folder which has 100 files

我正在尝试从文件夹中随机 select 一定数量的文件。例如,如果一个文件夹有 100 个文件,我想随机 select 40 个文件而不是前 40 个。

            string sourceFolder = //unc path;
            var dir = new DirectoryInfo(sourceFolder );
            var allFiles = dir.GetFiles("*.pdf");
            int fileCount = allFiles.Length; // 100 files
            int folderOne = 60;
            int folderTwo = 40;

            if (fileCount > 0)
            {
                // select 60 files randomly and move them to folderOne
            }

我尝试在 C# 中使用 Random 函数,但我无法理解它。

             var random = new Random();
             int index = random.Next(0, fileCount - 1);
             var file = allFiles[index].FullName;

如有任何帮助,我们将不胜感激。谢谢

随机排列文件的顺序,然后您只需将前 60 个复制到一个位置,将后 40 个复制到其他位置即可。

例如

var rnd = new Random();
var shuffled = allFiles.OrderBy(f => rnd.Next()).ToList();