【发布时间】:2017-06-29 20:24:12
【问题描述】:
Path.GetRandomFileName 返回一个由 11 个随机字符组成的加密强字符串。它由 8 个字符 + 点 + 3 个字符组成,例如:“b253i5vu.psf”。 char 可以是小写字母或 0 到 5 之间的数字。因此可能的字符串数为 32^11。
我的问题已经问过here和here,但答案都是错误的,因为:
他们说发生冲突的可能性是某个 X 值,而实际上它取决于目录中已有多少文件。因此,例如,如果您有一个包含 100,000 个使用 Path.GetRandomFileName 生成的文件的目录,那么与包含 1000 个文件的目录相比,发生冲突的机会更高。
他们不考虑Birthday Problem。
如果可能的话,我很感激你能以一种对没有大学水平数学知识的人来说易于使用的方式呈现公式,或者如果你能给出如何计算特定值的说明(例如,如果目录有 1000 个文件)。
【问题讨论】:
-
“Chances for”是“Probability of”的同义词,而“collision”与“already existing”的含义完全相同,所以这个问题与stackoverflow.com/questions/27945559/…完全相同
-
目录中现有文件的问题无关紧要。现有 1000 个文件时发生冲突的概率与从空目录开始并调用函数 1000 次以创建 1000 个文件时发生冲突的概率完全相同。
-
@MikeNakis:1)我已经在我的问题中写道,这个问题已经被问过了。就读吧。 2)你错了。空目录的冲突概率与目录已有 1000 个文件时的冲突概率不同。
-
发生冲突的概率为 = (driectory 中的文件数)/32^11。
标签: c# random statistics probability