我有一个经典的骰子模拟问题,我很努力实现,因为我是新的R语法。函数(我称之为捷联惯组)的工作原理如下:功能模拟游戏在R
- 开始与0点
- 模拟n个随机抽取的三头六面的骰子
- 对于每个抽奖:
- 如果总和的三个骰子> 12 - > 1点
- 如果三个骰子总和< 6 - > -1点
- 否则(即总和和6之间12):
- 如果三个骰子具有相同数目的 - > 5点
- 否则 - > 0分
- 返回以n模拟结束时获得点的总#
尝试过许多不同的方法,我似乎相当接近与:
simu <- function(n){
k <- 0
for(i in 1:n) {
a <- sample(y,1,replace=TRUE)
b <- sample(y,1,replace=TRUE)
c <- sample(y,1,replace=TRUE)
if ((a + b + c) > 12) {
k <- k+1
} else if ((a + b + c) < 6) {
k <- k-1
} else if ((a == b) & (b == c)) {
k <- k+5
} else k <- 0
}
return(k)
}
这个问题似乎是我无法对函数中的每个“i”迭代新的模拟(对于a,b,c)。
它看起来并不有什么不对的功能,你只是重置'k'为零的大部分时间,因此,如果调用'捷联惯组(N)'和'N> 1'赔率你会得到'k < - 0'。是不是“否则0点”意味着'否则添加零点? –
你是对的 - 最后的陈述应该是k < - k + 0.谢谢。 – Macter