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"