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

Ric*_*nka 7 passwords math

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

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

Nem*_*emo 8

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

abcXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

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

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

XabcXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

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

由于"abc"可以出现在从第一个位置到第十个位置的任何位置,因此有10*36 ^ 9个这样的字符串.

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

abcXXXabcXXX
Run Code Online (Sandbox Code Playgroud)

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

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

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

所以减去28*36 ^ 6.

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

abcXabcXabcX
Run Code Online (Sandbox Code Playgroud)

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

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

abcabcabcabc
Run Code Online (Sandbox Code Playgroud)

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

最终答案:

10*36^9 - 28*36^6 + 2*20*(36^3) - 3
Run Code Online (Sandbox Code Playgroud)

除以36 ^ 12得到你的概率.

另见包含 - 排除原则.如果我在计算中出错,请告诉我.

  • @Paul:只要你知道你正在进行近似,近似就没有错.如果你的回答显示出意识,我就不会对它进行投票.如上所述,这是错误的,所以我按下按钮并解释原因.如果您认为这是不合适的,我愿意在这里或在聊天中倾听. (2认同)