R 努力模拟N个骰子掷K个骰子

R 努力模拟N个骰子掷K个骰子,r,R,功能dice采用参数n,表示单个六面模具的卷数。它返回一个长度为n的向量,该向量的元素为整数b/w 1和6。我为下面的骰子函数创建了以下代码。当我测试它时,它似乎运行正常 dice <- function(n) { x <- c(1:6) sample(length(x), size = n, replace = TRUE, prob = x) } dice您可以尝试使用replicate+colSums定义kdice,如下所示 kdice <-

功能
dice
采用参数
n
,表示单个六面模具的卷数。它返回一个长度为
n
的向量,该向量的元素为整数b/w 1和6。我为下面的骰子函数创建了以下代码。当我测试它时,它似乎运行正常

dice <- function(n) {
     x <- c(1:6)
     sample(length(x), size = n, replace = TRUE, prob = x)

   }

dice您可以尝试使用
replicate
+
colSums
定义
kdice
,如下所示

kdice <- function(k, n) {
  tryCatch(
    colSums(matrix(replicate(n, dice(k)), nrow = k)),
    error = function(e) print("No number of dices were rolled")
  )
}

您可以尝试使用如下所示的
replicate
+
colSums
定义
kdice

kdice <- function(k, n) {
  tryCatch(
    colSums(matrix(replicate(n, dice(k)), nrow = k)),
    error = function(e) print("No number of dices were rolled")
  )
}

务必小心使用
prob
参数。
sample
的默认值是模具每一侧的概率相等。您设置了
prob=1:6
,这意味着
1
的概率是1/21,2的prob是2/21,3的prob是3/21,等等(因为
21
sum(1:6)
)。将参数留空以使用等概率默认值。这有点令人困惑,因为掷n个骰子k次与掷n*k个骰子相同。我认为您有一个问题,因为您使用长度(x)而不是x作为采样向量。长度x将是例如6。好的,我将去掉这个问题,用x代替长度(x)。感谢使用
prob
参数时要小心。
sample
的默认值是模具每一侧的概率相等。您设置了
prob=1:6
,这意味着
1
的概率是1/21,2的prob是2/21,3的prob是3/21,等等(因为
21
sum(1:6)
)。将参数留空以使用等概率默认值。这有点令人困惑,因为掷n个骰子k次与掷n*k个骰子相同。我认为您有一个问题,因为您使用长度(x)而不是x作为采样向量。长度x将是例如6。好的,我将去掉这个问题,用x代替长度(x)。谢谢
[1] 15  8
kdice <- function(k, n) {
  tryCatch(
    colSums(matrix(replicate(n, dice(k)), nrow = k)),
    error = function(e) print("No number of dices were rolled")
  )
}
> kdice(4, 5)
[1] 17 14 22 13 11

> kdice(4, 0)
[1] "No number of dices were rolled"