第二题我没做出来 :(,但看了几个贴出来的分析结果觉得还不是很满意。
这里我给出精确的用户名和注册码数量,供争议双方参考。这里不考虑超出53位的情况。
注册码的数量:
* 分为三组没问题,efgh, ijkl,abcd ,这三组可以是全排列(本例头3位是3 2 1) , 即p(3,3)=6;
* a, e单独取没问题,所以e,fgh为p(2,2)=2; a,bcd为p(2,2)=2;
* fgh由于程序设计,只能分为f,gh,为p(2,2)=2;
* bcd可以是全排列,p(3,3)=6;
* ijkl可以是全排列,p(4,4)=4;
所以注册码(代表字符)的数量Rs=6*2*2*2*6*4=1152个
用户名的数量:
* 可以在26个字母任意取12个字母组成p(12,26),但其中符合要求的比例为1152/p(12,12)(百万分之一)。所以用户名的数量Us=11125670400个
平均每个注册码大约对应9657700个多个正确的用户名。
这个结果似乎很恐怖,难道算错了?
做一个全覆盖的注册机可以采用如下方法:
* 随机生成12个不同字符的字符串,转换(1-12)后与1152个注册码(代表字符)比较,在其中则输出,不在其中则重新升成。注意成功概率为百万分之一。
* 这里要求有完整的1152个注册码的数据表;
所以100分的注册机工作量太大了,效率也太低。
看了我上面的分析,第二题我0分,大家是不是应该同情我? :)
- 标 题:关于第二题的争议我给出精确的用户名和注册码数量
- 作 者:nkspark
- 时 间:2008-10-09 11:36
- 链 接:http://bbs.pediy.com/showthread.php?t=74302