随机生成的密码中出现3个字符串的概率

时间:2011-07-22 13:22:38

标签: math passwords

如果你有一个随机生成的密码,只包含长度为12的字母数字字符,并且比较不区分大小写(即'A'=='a'),那么长度为3的特定字符串的概率是多少(例如'ABC')会出现在该密码中吗?

我知道总可能组合的数量是(26 + 10)^ 12,但除此之外,我有点迷失。对数学的解释也是最有帮助的。

3 个答案:

答案 0 :(得分:8)

字符串“abc”可以出现在第一个位置,使字符串看起来像这样:

abcXXXXXXXXX

...... X可以是任何字母或数字。有(26 + 10)^ 9个这样的字符串。

它可以出现在第二个位置,使字符串看起来像:

XabcXXXXXXXX

还有(26 + 10)^ 9个这样的字符串。

由于“abc”可以出现在从第1个位置到第10个位置的任何位置,因此有10 * 36 ^ 9个这样的字符串。

但这超过了,因为它计算了(例如)两次这样的字符串:

abcXXXabcXXX

所以我们需要像这样计算所有字符串并将它们从总数中减去。

由于此模式中有6个X,因此有36 ^ 6个字符串与此模式匹配。

我得到7 + 6 + 5 + 4 + 3 + 2 + 1 = 28这样的模式。 (如果第一个“abc”在开头,第二个可以在7个位置中的任何一个。如果第一个“abc”在第二个位置,第二个可以在6个位置中的任何一个。依此类推。)< / p>

因此减去28 * 36 ^ 6。

...但是这减少了太多,因为它减去了这样的字符串三次而不是一次:

abcXabcXabcX

所以我们必须在这样的字符串中添加两次。我得到4 + 3 + 2 + 1 + 3 + 2 + 1 + 2 + 1 + 1 = 20这些模式,这意味着我们必须加回2 * 20 *(36 ^ 3)。

但是那个数学计算了四次这个字符串:

abcabcabcabc

...所以我们必须减去3。

最终答案:

10*36^9 - 28*36^6 + 2*20*(36^3) - 3

将其除以36 ^ 12以获得概率。

另见Inclusion-Exclusion Principle。如果我在计算中出错,请告诉我。

答案 1 :(得分:0)

如果A不等于C,则P(n)的概率ABC出现在长度为n的字符串中(假设每个字母数字符号均为可能)是

P(n)=P(n-1)+P(3)[1-P(n-3)]

其中

P(0)=P(1)=P(2)=0 and P(3)=1/(36)^3

答案 2 :(得分:-2)

扩展Paul R的答案。概率(对于同样可能的结果)是您的事件可能结果的数量除以可能结果的总数。

有10个可能的地方,长度为3的字符串可以在长度为12的字符串中找到。还有9个点可以用任何其他字母数字字符填充,这导致36^9种可能性。因此,您的活动的可能结果数量为10 * 36^9

除以您的总结果数36^12。你的答案是10 * 36^-3 = 0.000214

编辑:这不完全正确。在这个解决方案中,有些案例是双重计算的。然而,它们只对概率产生非常小的贡献,因此这个答案仍然是正确的,最多可达11位小数。如果您想要完整的答案,请参阅Nemo的答案。