我想分析一些 VCS 软件,为此我想在随机排列的目录中生成一组随机文件。我正在用 Python 编写脚本,但我的问题很简单:如何生成一个随机目录树,其中每个目录的平均子目录数和每个目录的文件分布广泛?
澄清:我不是在比较不同的 VCS 存储库格式(例如 SVN 与 Git 与 Hg),而是分析处理 SVN(以及最终其他)工作副本和存储库的软件。
我想要的约束是指定文件总数(称为“N”,可能是 ~10k-100k)和目录结构的最大深度(“L”,可能是 2-10)。我不在乎每个级别生成了多少个目录,并且我不想最终每个目录生成 1 个文件,或者在一个目录中生成 100k 个文件。
分布是我不确定的,因为我不知道 VCS(特别是 SVN)在非常均匀的结构还是非常倾斜的结构下表现会更好或更差。尽管如此,如果我能想出一种算法,它不会对大数“均衡”,那就太好了。
我的第一个想法是:使用某种方法生成目录树,然后用文件统一填充树(平等对待每个目录,不考虑嵌套)。我的粗略计算告诉我,如果有“L”级,每个目录有“D”子目录,每个目录有大约 sqrt(N) 个文件,那么将有大约 D^L 目录,所以 N =~ sqrt(N)*(D^L) => D =~N^(1/2L)。所以现在我有了“D”的近似值,我如何生成树?如何填充文件?
我会很感激一些指向我可以使用的算法的好资源的指针。我的搜索只找到了漂亮的小程序/闪存。
为什么不下载一些真正的开源存储库并使用它们呢?
您是否考虑过文件中的内容?那也是随机数据吗?
| 归档时间: |
|
| 查看次数: |
3024 次 |
| 最近记录: |