我想制定一个公式,基本上可以计算出掷骰子的平均输出,想想龙与地下城。
我想使用单个公式来计算任何可能的掷骰结果,并使用每个数字作为输入。如果我想计算 1d3+2 的掷骰结果,我可以使用 =RANDBETWEEN(1,3)+2,但如何才能在不编辑公式的情况下计算 2d3 的掷骰结果?我该如何在一个公式中任意多次执行 RANDBETWEEN()?
计划是能够将其用于数百和数千个卷,所以我想避免用公式填充行和行,我计划使用不同的卷作为行,并使用多种不同的可能性作为列,所以我也想节省空间。这是我目前所拥有的但正如您所看到的,每次掷骰子的公式不足以满足多个骰子的需求。
我愿意接受否定的答案,如果必须的话,我可以在 VBA 中创建一个解决方案,但为了简单起见,我想知道 Excel 是否可以处理这个问题。
答案1
首先,您需要创建一个标有骰子数量的表格。因此,在 A6 中输入以下公式,并复制尽可能多的次数,直到得到所需的骰子总数:
=IF(ROW(1:1)<=$A$2,ROW(1:1),"")
这将引用 A2,我将所需的骰子数量放入其中。
然后在 B6 中输入并复制:
=IF(A6<>"",RANDBETWEEN(1,$B$2),"")
这将创建这些骰子的随机“滚动”。每个骰子占 1 行。B2 包含面数。
然后将常数相加并加上:
=SUM($B$6:$B$1000)+$C$2
若要在一个单元格中执行此操作,请使用以下数组公式:
=SUM(RANDBETWEEN(1,(ROW(INDEX($A:$A,1):INDEX($A:$A,$A2))<=$A2)*$B2))+$C2
作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而不是 Enter 进行确认。
这将使 A2 中注明的 RandBetweens 数量与边数设置的随机数上限一致。