Update normal_chat.py

This commit is contained in:
SengokuCola
2025-06-14 22:10:30 +08:00
parent 30f2eac278
commit 4dc4e9435c

View File

@@ -744,16 +744,18 @@ class NormalChat:
# 计算回复概率reply_count在总消息中的比值
reply_ratio = reply_count / total_messages if total_messages > 0 else 0
# 使用对数函数让低比率时概率上升更快log(1 + ratio * k) / log(1 + k)
# k=100.1比率对应约0.67概率0.5比率对应约0.95概率
k_reply = 10
reply_build_probability = math.log(1 + reply_ratio * k_reply) / math.log(1 + k_reply) if reply_ratio > 0 else 0
# 使用对数函数让低比率时概率上升更快log(1 + ratio * k) / log(1 + k) + base
# k=70.05比率对应约0.4概率0.1比率对应约0.6概率0.2比率对应约0.8概率
k_reply = 7
base_reply_prob = 0.1 # 基础概率10%
reply_build_probability = (math.log(1 + reply_ratio * k_reply) / math.log(1 + k_reply)) * 0.9 + base_reply_prob if reply_ratio > 0 else base_reply_prob
# 计算接收概率receive_count的影响
receive_ratio = receive_count / total_messages if total_messages > 0 else 0
# 接收概率使用更温和的对数曲线最大0.4
k_receive = 8
receive_build_probability = (math.log(1 + receive_ratio * k_receive) / math.log(1 + k_receive)) * 0.4 if receive_ratio > 0 else 0
# 接收概率使用更温和的对数曲线最大0.5基础0.08
k_receive = 6
base_receive_prob = 0.08 # 基础概率8%
receive_build_probability = (math.log(1 + receive_ratio * k_receive) / math.log(1 + k_receive)) * 0.42 + base_receive_prob if receive_ratio > 0 else base_receive_prob
# 取最高概率
final_probability = max(reply_build_probability, receive_build_probability)