C# 从包含100个文件的文件夹中随机选择40个文件

C# 从包含100个文件的文件夹中随机选择40个文件,c#,.net,random,directory,directoryinfo,C#,.net,Random,Directory,Directoryinfo,我试图从文件夹中随机选择一定数量的文件。例如,如果一个文件夹有100个文件,我想随机选择40个文件,而不是前40个 string sourceFolder = //unc path; var dir = new DirectoryInfo(sourceFolder ); var allFiles = dir.GetFiles("*.pdf"); int fileCount = al

我试图从文件夹中随机选择一定数量的文件。例如,如果一个文件夹有100个文件,我想随机选择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语言中使用随机函数,但我无法理解它

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

任何帮助都将不胜感激。谢谢

随机化文件的顺序,然后您可以简单地将前60个文件复制到一个位置,将最后40个文件复制到其他位置

乙二醇


嗨,KMR。你是在问如何生成一个随机数,达到一定的大小吗?还是你在问如何随机选择一些文件?@CaseyCrookston我在问如何随机选择一定数量的文件。例如,不是从文件夹中选择一个文件,而是从100个文件中随机选择40个文件。这可能会回答您的问题:@CaseyCrookston我看到了这个问题。但我的问题有点不同。关于你链接中的问题,他正在从文件夹中选择一个文件。有什么方法可以一次选择40个随机文件吗?@caseycrokston我用David的linq查询使列表随机。我已经测试了我的代码,它是有效的。不幸的是,我不能发布我的答案,因为这个问题已经结束,并不是一个真正的随机洗牌。但它可能对OP有用。布里尔!这正是我想要的。信息技术worked@CaseyCrookston为什么不是真正的随机?因为使用了伪随机发生器?@TheodorZoulias,是的。我的意思是,这确实会改变列表,但不会以真正随机的方式。随机意味着所有唯一的组合将以均匀分布出现。如果你运行1000次,我想你会看到同样的结果重复。但是,这也不是问题,因为它给了OP他所需要的。@CaseyCrokston yeap,Random类只能用2^32个不同的状态初始化,它的种子是Int32。所以,如果我的数学是正确的,你应该期望在平均2^1665536次洗牌后得到一个副本。
var rnd = new Random();
var shuffled = allFiles.OrderBy(f => rnd.Next()).ToList();