C-将名字转换成岁数,算法实现?
有一个输入框,用户输入姓名,如“张三”,会显示出一个根据算法计算出来岁数,比如25
要求:
不能第一次输入“张三”的时候 显示35岁。
第二次输入“张三”的时候 显示 50 岁。
想将名字转换成正常岁数。岁数是 1~100之间。
20~60 的占概率的 80%
有什么比较好的算法?大家可以说说用数据库和不用数据库的方法。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
将汉字的unicode按照第奇数倒序, 第偶数个顺序, 然后取异或的结果, 这样的结果应该可以视作平均分布. 然后按照自己设定的概率映射到年龄区间, 感觉这样的随机性和可玩性比较大, 不会让人轻易发现规律.
1,搜集所有的姓氏。每个姓对于一个分数值,在姓氏上做概率的处理;
如:
张 => 60
王 => 70
冯 => 80
2 利用汉字笔画数库,将 名 的笔画进行求和。
比如 姓名 冯义军 : 80 + 3 + 6 = 89
如果最终算出来的值大于 100 那么按照 100 处理,或者其他处理。
不知道这样可行不。。
把输入字符串的unicode码哈希,乘于一个大于100的素数再用100取余。
既然是娱乐用的可以把名字md5一下,然后变成byte固定取某几位的值呀,再加些判断就能达到效果
将名字转换成整数不难,问题在于概率的设定,这个稍微麻烦一点点。
如果采用数据库还是比较简单的,将人名和年龄存储起来,就可以保证同名年龄的一致性,并在数据库中存储一个概率值,每一次新的查询,结合已有的概率值产生一个年龄值,并存入数据库,再更新保存的概率。
如果不采用数据库,就需要将名字做HASH来生成年龄值,若要保证概率范围,我的思路是首先从网上搜寻有人统计的汉字中姓、名出现频率,生成一张简单的映射表,做HASH时根据映射表来产生年龄。
这个本身就是不合理的吧
也就是娱乐的程序会用到
我建议采用每个字的拼音的asc码来叠加得到的值在进行比率处理,这样应该简单合理些!