【发布时间】:2019-02-09 18:22:25
【问题描述】:
我正在尝试在 R 中运行骰子滚动模拟。在我的项目中,我使用的是龙与地下城的 D20,它是一种 20 面骰子,用于桌面游戏,例如。
游戏的一个特点是当玩家攻击或施法时,他们会掷出 D20,掷出的结果决定成功。玩家可能有正面或负面的修正来添加到掷骰的总和中。我正在尝试根据他们的修改器创建一个滚动特定结果的玩家。这是我目前所拥有的:
D20_prob = function(d, nreps) {
roll = matrix(sample(20, size = d * nreps, replace = T), ncol = nreps)
result_tot = (roll + 1) # Adds modifier
return(prop.table(table(result_tot)))
}
D20_prob(1, 100)
结果是这样的:
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
0.02 0.04 0.04 0.02 0.10 0.08 0.05 0.05 0.05 0.03 0.04 0.04 0.03 0.06 0.05 0.05 0.08 0.04 0.06 0.07
在 D&D 游戏中,修饰符的范围可以从 -5 到 +5。谁能帮我修改我的代码,以便我可以创建一个范围为 -5 到 +5 的表格?
【问题讨论】:
-
有什么理由不计算理论概率而不是随机样本吗?
-
我更喜欢那个!我只是不知道如何通过R?计算理论概率将大大增加我的项目的价值,所以如果你知道如何做到这一点,非常感谢
-
@KeithSanders 理论概率不是微不足道的吗?骰子被假定为无偏的,因此除非您要考虑的修饰符有一些未指定的概率分布,否则任何可能数字的概率都是 1/20(修饰符的唯一作用是确定哪些数字是可能的——但这只是一个加法或减法)。当表格中的所有内容都是相同的数字 (0.05) 时,生成表格没有什么意义。这一切让我想知道你是否打算问一个不同的问题。也许你可以澄清一下。