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

D&D随机计算器开发技术问询:XdY骰子运算及表达式计算问题

1d20结果为10.5的原因

示例给出的是骰子点数的数学期望值,不是单次投掷的随机结果。单个Y面骰子的点数取值为1到Y的整数,每个数值出现概率相等,期望值计算公式为:

单骰子期望 = (最小点数 + 最大点数) / 2 = (1 + Y) / 2

对应1d20的计算结果就是(1+20)/2 = 10.5,和示例完全一致。同理XdY的总期望值为X乘以单骰子期望,即X*(1+Y)/2,你可以验证第三个示例:2d6的期望为2*(1+6)/2=7,1d12的期望为(1+12)/2=6.5,代入表达式计算可得7 + (-6.5/5) = 7 - 1.3 = 5.7,和示例结果完全匹配。

mDn类型运算的处理方案

DataTable原生只支持标准四则运算,无法直接识别XdY语法,你可以按以下步骤适配:

  • 第一步:用正则匹配预处理输入表达式,识别所有XdY格式的子串,匹配规则可参考(\d+)d(\d+)
  • 第二步:对每个匹配到的XdY,提取X、Y的整数值,按期望值公式计算出对应双精度浮点数结果
  • 第三步:将原表达式中所有XdY子串替换为计算得到的数值,得到仅含标准四则运算的表达式
  • 第四步:将替换后的表达式传入DataTable.Compute方法计算即可,注意配置运算规则为浮点除法,保证3/2输出1.5而非整数1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:15:04