“名字测试/取名算命打分”常见算法主要来自民俗体系,建议定位为娱乐参考,不要当成科学。一个比较完整的取名打分系统通常由以下几部分组成:

1. 常见打分维度
| 维度 | 内容 | 建议权重 |
|||:|
| 五格数理 | 天格、人格、地格、外格、总格的笔画吉凶 | 30% |
| 三才五行 | 天格、人格、地格对应五行,看相生相克 | 20% |
| 生辰八字 | 根据出生年月日时分析五行喜忌,名字补益 | 25% |
| 音形义 | 读音、寓意、字形美观、是否拗口 | 15% |
| 实用性 | 重名率、谐音、性别适配、书写难度 | 10% |
2. 五格数理算法
需要先确定使用哪种笔画:
- 康熙笔画:传统姓名学常用
- 简体笔画:现代应用常用
五格计算方法
假设:
- 姓氏笔画:`surname_strokes`
- 名字笔画:`name_strokes`
例如:
张三丰
张 = 11,三 = 3,丰 = 18
单姓双名
```text
天格 = 姓氏笔画 + 1
人格 = 姓氏笔画 + 名字第一个字笔画
地格 = 名字两个字笔画之和
外格 = 名字最后一个字笔画 + 1
总格 = 姓名全部笔画之和
```
通用计算规则
```python
def five_grid(surname_strokes, name_strokes):
"""
surname_strokes: list[int] 姓氏笔画,如 [11] 或 [5, 10]
name_strokes: list[int] 名字笔画,如 [3, 18] 或 [9]
"""
天格
if len(surname_strokes) == 1:
heaven = surname_strokes[0] + 1
else:
heaven = sum(surname_strokes)
人格:姓最后一个字 + 名第一个字
personality = surname_strokes[-1] + name_strokes[0]
地格
if len(name_strokes) == 1:
earth = name_strokes[0] + 1
else:
earth = sum(name_strokes)
总格
total = sum(surname_strokes) + sum(name_strokes)
外格
outer = (
(surname_strokes[0] if len(surname_strokes) > 1 else 1)
+
(name_strokes[-1] if len(name_strokes) > 1 else 1)
)
return {
"天格": heaven,
"人格": personality,
"地格": earth,
"外格": outer,
"总格": total
}
```
3. 数理吉凶评分
传统姓名学会把 1—81 的数理分为:
```text
大吉、吉、半吉、凶、大凶
```
你可以建立一个表:
```python
number_luck = {
1: "大吉",
2: "凶",
3: "大吉",
4: "凶",
5: "大吉",
...
81: "大吉"
}
```
然后换算成分数:
```python
luck_score = {
"大吉": 100,
"吉": 85,
"半吉": 70,
"凶": 45,
"大凶": 20
}
```
五格总分可以这样算:
```text
五格分 = 天格分 × 10% + 人格分 × 30% + 地格分 × 25% + 外格分 × 10% + 总格分 × 25%
```
传统上较重视:
- 人格:主运
- 地格:前运
- 总格:后运
4. 三才五行算法
三才指:
```text
天格、人格、地格
```
把数理尾数转换成五行:
| 尾数 | 五行 |
|||
| 1、2 | 木 |
| 3、4 | 火 |
| 5、6 | 土 |
| 7、8 | 金 |
| 9、0 | 水 |
代码示例:
```python
def number_element(num):
last = num % 10
if last in [1, 2]:
return "木"
elif last in [3, 4]:
return "火"
elif last in [5, 6]:
return "土"
elif last in [7, 8]:
return "金"
else:
return "水"
```
五行相生:
```text
木生火,火生土,土生金,金生水,水生木
```
五行相克:
```text
木克土,土克水,水克火,火克金,金克木
```
三才评分可以这样:
```python
def relation_score(a, b):
generate = {
"木": "火",
"火": "土",
"土": "金",
"金": "水",
"水": "木"
}
overcome = {
"木": "土",
"土": "水",
"水": "火",
"火": "金",
"金": "木"
}
if a == b:
return 80
elif generate[a] == b:
return 100
elif generate[b] == a:
return 90
elif overcome[a] == b or overcome[b] == a:
return 50
else:
return 70
```
5. 生辰八字取名算法
如果要做“取名算命”,一般还会加入八字。
需要输入:
```text
出生年、月、日、时
出生地
性别,可选
```
基础流程:
```text
1. 将公历时间转换为四柱八字
2. 得到年柱、月柱、日柱、时柱
3. 分析日主五行强弱
4. 判断喜用神
5. 名字用字尽量补喜用五行
```
例如:
```text
八字五行缺水,喜水、木
那么名字可以优先选择五行为水、木的字
如:涵、泽、沐、清、林、森、桐等
```
但八字算法比较复杂,涉及:
- 节气换月
- 天干地支
- 藏干
- 旺衰
- 十神
- 格局
- 喜用神判断
实际开发时可以接入万年历库,或建立干支转换模块。
6. 音形义评分
这一部分更适合现代取名。
可以从以下方面打分:
读音
```text
是否顺口
是否平仄协调
是否有不良谐音
```
例如:
```text
杜子腾 ≈ 肚子疼
史珍香 ≈ 屎真香
```
这类名字应大幅扣分。
字义
加分:
```text
寓意美好、积极、文雅、大气
```
扣分:
```text
生僻、消极、俗气、歧义明显
```
字形
加分:
```text
结构协调
繁简搭配合理
书写美观
```
扣分:
```text
笔画过多
过于生僻
结构拥挤
```
7. 综合评分公式示例
```python
final_score = (
five_grid_score 0.30 +
three_talent_score 0.20 +
bazi_score 0.25 +
sound_meaning_shape_score 0.15 +
practical_score 0.10
)
```
最后可以输出:
```text
姓名:张三丰
综合评分:88分
五格:86分
三才:90分
八字补益:82分
音形义:92分
实用性:85分
评价:名字读音响亮,字义稳重大气,五格配置较佳,适合作为男孩名字。
```
8. 简单测试模板
如果你想测试一个名字,可以提供:
```text
姓氏:
名字:
性别:
出生日期:
出生时间:
出生地:
使用康熙笔画还是简体笔画:
```
例如:
```text
姓氏:李
名字:沐辰
性别:男
出生日期:2024-08-15
出生时间:上午9:30
出生地:杭州
笔画:康熙笔画
```
我可以按照上述规则帮你做一个名字打分分析。
