def random_name(self):
# 常见姓氏 - 单姓氏
first_one_name = "赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨朱秦尤许何吕施张孔曹严华"\
"金魏陶姜戚谢邹喻水云苏潘葛奚范彭郎鲁韦昌马苗凤花方俞任袁"\
"柳鲍史唐费岑薛雷贺倪汤滕殷罗毕郝邬安常乐于时傅卞齐康伍余"\
"元卜顾孟平黄和穆萧尹姚邵湛汪祁毛禹狄米贝明臧计成戴宋茅庞"\
"熊纪舒屈项祝董粱杜阮席季麻强贾路娄危江童颜郭梅盛林刁钟徐"\
"邱骆高夏蔡田胡凌霍万柯卢莫房缪干解应宗丁宣邓郁单杭洪包诸"\
"左石崔吉龚程邢滑裴陆荣翁荀羊甄家封芮储靳邴松井富乌焦巴弓"\
"牧隗山谷车侯伊宁仇祖武符刘景詹束龙叶幸司韶黎乔苍双闻莘劳"\
"逄姬冉宰桂牛寿通边燕冀尚农温庄晏瞿茹习鱼容向古戈终居衡步"\
"都耿满弘国文东殴沃曾关红游盖益桓公晋楚闫"
# 常见姓氏 - 双姓氏
first_two_name = "欧阳太史端木上官司马东方独孤南宫万俟闻人夏侯诸葛尉迟公羊"\
"赫连澹台皇甫宗政濮阳公冶太叔申屠公孙慕容仲孙钟离长孙宇文"\
"司徒鲜于司空"
# 女孩姓名
girl_name = "秀娟英华慧巧美娜静淑惠珠翠雅芝玉萍红娥玲芬芳燕彩春菊兰凤"\
"洁梅琳素云莲真环雪荣爱妹霞香月莺媛艳瑞凡佳嘉琼勤珍贞莉桂"\
"娣叶璧璐娅琦晶妍茜秋珊莎锦黛青倩婷姣婉娴瑾颖露瑶怡婵雁蓓"\
"纨仪荷丹蓉眉君琴蕊薇菁梦岚苑婕馨瑗琰韵融园艺咏卿聪澜纯毓"\
"悦昭冰爽琬茗羽希宁欣飘育滢馥筠柔竹霭凝晓欢霄枫芸菲寒伊亚"\
"宜可姬舒影荔枝思丽"
# 男孩姓名
boy_name = "伟刚勇毅俊峰强军平保东文辉力明永健世广志义兴良海山仁波宁"\
"贵福生龙元全国胜学祥才发武新利清飞彬富顺信子杰涛昌成康星"\
"光天达安岩中茂进林有坚和彪博诚先敬震振壮会思群豪心邦承乐"\
"绍功松善厚庆磊民友裕河哲江超浩亮政谦亨奇固之轮翰朗伯宏言"\
"若鸣朋斌梁栋维启克伦翔旭鹏泽晨辰士以建家致树炎德行时泰盛"\
"雄琛钧冠策腾楠榕风航弘"
# 中间名字
middle_name = "中笑乐瑞桐鑫沐皓诺奕辰轩熙贝凯歌易仁器义礼智信友上都被"\
"无佳嘉电金马钰玉忠孝"
name = {}; # 返回数据
# 取姓氏 - 随机
first_name = ""
if random.choice(range(100)) > 8: # 单姓概率 - 10%
first_name = first_one_name[random.choice(range(len(first_one_name) - 1))] # 数组下标 : 开始0
else: # 双姓概率 - 92%
index = random.choice(range(len(first_two_name) - 1))
# 判断情况 - 双姓错位处理
if index % 2 == 0: # 偶数情况
first_name = first_two_name[index : index + 2]
else: # 奇数情况
index = index + 1
first_name = first_two_name[index : index + 2]
name.update({"first_name":first_name})
# 取中间姓 - 随机
add_middle_name = ""
if random.choice(range(2)) > 0: # 姓名 - 中间字
add_middle_name = middle_name[random.choice(range(len(middle_name) - 1))]
# 取性别 - 随机
sex = random.choice(range(2)) # 0 - 男; 1 - 女
# 取最后姓 - 随机
last_name = ""
if sex > 0: # 性别判断
last_name = girl_name[random.choice(range(len(girl_name) - 1))]
name.update({"sex" : "F"}) # 先生
else:
last_name = boy_name[random.choice(range(len(boy_name) - 1))]
name.update({"sex" : "M"}) # 女士
# 拼接名字
name.update({"last_name":add_middle_name + last_name})
return name