vb.net - 从文件夹中随机选择 1000 个文件

sha*_*rgy 0 vb.net random file

我有一个文件夹,里面有很多文件。大约在 1000 到 15000 之间。

我需要从此文件夹中随机选取 1000 个文件并将其复制到另一个文件夹。我知道如何通过将文件列表插入到数组中然后随机选择一个来从文件夹中获取单个随机文件,但不知道如何获取多个文件,同时避免选择同一文件两次。

例如,如果我的文件夹中有 1001 个文件,那么获取前几个文件不会有任何问题,但到最后,很可能会选择一个已经复制过来的文件,并且需要多次尝试才能找到例如最后一个文件只是运气好......

我的第一个想法是将文件数量除以 1000。例如 1500/1000 = 1.5。然后创建一个 0 到 1.5 之间的随机整数。这将返回 1。然后在第 n 个图像和第 n 个图像 * 1.5 之间执行下一个随机数。

如果文件夹有 15000 个文件,它将在 1 到 15 之间随机选择第一个文件,然后在 6 到 30 之间,依此类推。

但必须有一个更聪明的解决方案。

任何帮助表示赞赏

Tim*_*ter 5

您可以随机订购:

Dim allFiles = Directory.EnumerateFiles("path")
Dim rnd As New Random()
Dim random1000 = From f In allfiles
                 Order By rnd.Next()
                 Select f
                 Take 1000
Dim list = random1000.ToList()
Run Code Online (Sandbox Code Playgroud)

这是使用System.Linq