【问题标题】:Dice Rolling Probability matrix with a D20(20 sided-dice)使用 D20(20 面骰子)的掷骰概率矩阵
【发布时间】: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) 时,生成表格没有什么意义。这一切让我想知道你是否打算问一个不同的问题。也许你可以澄清一下。

标签: r matrix dice


【解决方案1】:

我认为你想要的功能是

sample.int(10, n= 20, replace = TRUE)

这真的取决于你想要模拟什么。 如果你想看看结果的可能性有多大,给定一定数量的掷骰(即,如果我使用该修饰符,考虑到我在接下来 20 小时的游戏中造成的伤害,它是否比另一个更好),在这里你将使用上述功能并模拟尽可能多的滚动(即 1000 或更多)。 第二个选项是您想查看一般结果的概率(即,如果我需要滚动到 18 以上,那么我滚动该结果的机会是多少)。在这种情况下,滚动一个数字的概率是 1/20,因为你有一个 D20。

我曾经做过类似的事情:我的模拟器通过随机滚动完成,以查看组合成功的可能性,让玩家了解他们的修改器从长远来看将如何工作。 但在这种情况下,请注意随机数永远不是真正随机的(有更好和更差的包)。

编辑:

要遍历损坏,您可以使用 for 循环:

 for (modifier in -5:5){
  result_tot = prop.table(table(roll + modifier))
}

问题是我从未使用过 data.tables,而且我似乎无法合并生成的所有不同表。在上面的示例中,每个循环都会覆盖表 result_tot。所以你需要先打印出来或者想办法合并结果表。

【讨论】:

  • 我不确定我是否理解或我的问题是否明确。我真正想要关注的部分是代码部分中的修饰符:result_tot = (roll + 1)。当我运行代码时,它给了我一个包含 +1 修饰符结果的表。有没有一种方法可以在一个代码中生成一个包含修饰符 -5 到 +5 的表,或者我每次都必须手动更改修饰符?您还可以分享更多关于您的模拟器的信息吗?看起来很迷人。
  • 哦,我误解了你的问题。我在上面编辑了它。我的模拟器是一个基本的 html 页面,上面有一个图表,说明某种组合从长远来看会造成多大的损害。所以你可以添加修饰符、奖金等,看看你会造成多少伤害。和哪个卷。它主要是为想要了解如何平衡他们的系统的游戏开发者准备的。但也可以被强大的游戏玩家使用;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多