根据输入信息匹配到有缘运动员明星
有这么一个小应用,用户输入姓名、生日和性别信息,根据一个算法转化,在数据库中能找到一个并且是唯一的运动员明星,运动员的数据会不断增加。请问如何设计数据库和算法,保证
1.每次输入都能查到一个运动员。
2.相同输入数据返回一个唯一的运动员。
3.所有运动员都有被查到的机会。
Rechtar
12 years, 8 months ago
Answers
没有特殊要求的话这种测验类型的应用基本上就用万能的md5就行了
md5($name.$birth.$sexual)
然后取前几个字节转成整数,取RAND_MAX的余数
运动员入数据库的时候随机为他分配一个随机Id,范围在0 - RAND_MAX之间。然后根据输入的数,在数据库里查找大于输入数值的最小Id,返回这个运动员就行了。
添加进新的运动员之后肯定有一部分用户返回的人选会变,不过只要运动员数量够多,绝大多数用户返回的结果是不会变的。
如果是要找生日、性别最接近的那就是别的算法,不过就不满足另外的条件了。比如2月29号出生的运动员会悲剧。
Rocky
answered 12 years, 8 months ago