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

如何在Google Sheets中基于稀有度实现DND物品加权随机选择

DND物品加权随机选择解决方案(Google Sheets)

原公式问题分析

你用的公式返回最后一项,核心原因是AS4:AS61列是单个物品的权重值,而非累积权重序列。MATCH(..., range, 1)需要查找范围是升序的累积值,当随机数大于所有单个权重时,就会匹配到最后一项。

修正步骤

1. 计算单个物品权重(可自定义逻辑)

如果沿用你的权重规则1-(稀有度-1)/10,在AS4输入:

=1-(DM_MasterList!J4-1)/10

下拉到AS61,得到每个物品的单权重(Common=1,Uncommon=0.9,Rare=0.8,Legendary=0.7)。

如果想要更直观的概率差异(比如Common出现概率远高于Legendary),改用SWITCH自定义权重:

=SWITCH(DM_MasterList!J4, 1, 10, 2, 5, 3, 2, 4, 1)

(这里Common权重10,Uncommon5,Rare2,Legendary1,可按需调整数值)

2. 生成累积权重列

在AT4输入累积求和公式,下拉到AT61:

=SUM(DM_MasterList!AS$4:AS4)

此时AT61是所有物品的权重总和,AT列是从第一个物品到当前物品的权重累加值(自然升序排列)。

3. 正确的加权随机选择公式

用以下公式获取随机物品:

=INDEX(DM_MasterList!B4:B61, MATCH(RANDBETWEEN(1, DM_MasterList!AT61), DM_MasterList!AT4:AT61, 1))

每次按Ctrl+R刷新表格会重新随机选择。

替代方案:无需辅助列的单公式实现

如果不想用额外辅助列,可直接在公式内计算权重与累积值:

=INDEX(DM_MasterList!B4:B61, SUMPRODUCT(--(SUMIF(ROW(DM_MasterList!J4:J61), "<="&ROW(DM_MasterList!J4:J61), SWITCH(DM_MasterList!J4:J61,1,10,2,5,3,2,4,1)) < RANDBETWEEN(1, SUM(SWITCH(DM_MasterList!J4:J61,1,10,2,5,3,2,4,1))))) + 1)

批量选择指定数量物品

如果要一次性选取N个物品(比如5个),结合ARRAYFORMULA实现:

=ARRAYFORMULA(INDEX(DM_MasterList!B4:B61, MATCH(RANDBETWEEN(1, DM_MasterList!AT61, 5), DM_MasterList!AT4:AT61, 1)))

(把公式中的5替换为你需要的物品数量)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:22:44