You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现猜对后降低选中概率的动态权重作者随机选取

高效实现思路

数据结构设计:嵌套字典完全可行

直接用嵌套字典存储即可,外层键为历史时期,内层键为作者名,值为该作者被猜对的次数(初始值设为1,保证第一次选取时有正常概率)。示例结构:

period_authors = {
    "periodOne": {"Author1": 1, "Author2": 1},
    "periodTwo": {"Author3": 1, "Author4": 1}
}

这种结构的优势:

  • 快速定位任意作者的计数,更新操作耗时O(1)
  • 天然按历史时期分组,方便后续扩展(比如按时期筛选作者)

加权随机选取作者

核心逻辑是让被猜对次数越多的作者,选中概率越低。具体步骤:

  1. 收集所有作者与权重:遍历嵌套字典,为每个作者计算权重,权重设为1 / 猜对次数——次数越多,权重越小,选中概率越低。
  2. 加权随机选择:用语言自带的加权随机工具实现,比如Python的random.choices:
import random

def select_author(period_authors):
    authors = []
    weights = []
    for period, author_counts in period_authors.items():
        for author, count in author_counts.items():
            authors.append(author)
            weights.append(1 / count)
    # 选取1个作者
    return random.choices(authors, weights=weights, k=1)[0]

猜对后的更新逻辑

当用户猜对某作者的所属时期后,直接找到该作者的计数并加1即可:

def update_author_count(period_authors, target_period, target_author):
    period_authors[target_period][target_author] += 1

可选优化点

  • 设置计数上限:比如将最大计数设为5,避免某个作者权重趋近于0,彻底失去被选中的机会,保证所有作者都有出场可能。
  • 缓存权重列表:如果作者数量极大,可维护一个全局的作者-权重缓存字典,每次更新计数时同步更新缓存,避免每次选作者都遍历全量数据。

内容的提问来源于stack exchange,提问作者M3mber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:00:53