骰子摇概率矩阵具有D20(20面 - 骰子)

问题描述 投票:1回答:1

我试图运行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 matrix dice
1个回答
1
投票

我想你想要的功能

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

这真的取决于你想模拟一下。如果你想看看如何可能的结果是,给予一定量辊(即,如果我使用调节剂是它比其他给我在接下来的二十个小时的比赛做损害越好),在这里你可以使用上面提到的功能和模拟尽可能多的轧辊,你可以(即1000或更多)。第二个选项是你想看到的一般结果的概率(即,如果我需要推出18岁以上的是我那滚动的机会)。在这种情况下滚动数字的概率为1/20,因为你有一个D20。

我曾经做过类似的事情:我的模拟器用随机卷做看到的组合怎么可能成功给玩家一个想法,自己怎么修饰符在长期运行。但是,在这种情况下,要知道随机数永远不会是真正随机的(有更好和更坏包)。

编辑:

要通过损害循环,可以使用一个for循环:

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

问题是,我从来没有与data.tables工作,我似乎并没有能够合并所有这些都产生了不同的表。在每个环上面的例子将覆盖表result_tot。所以,你需要前,打印或找到一种方法来合并生成的表。

© www.soinside.com 2019 - 2024. All rights reserved.