基于R
我试图模拟一个有偏差的硬币,它反复翻转,直到两个正面出现在一行或两个反面出现在一行(然后翻转停止)。我想求概率P(一行中两个正面出现在两个反面之前) 正在寻找将“尾部”翻转合并到循环中的帮助。谢谢基于R,r,statistics,simulation,probability,distribution,R,Statistics,Simulation,Probability,Distribution,我试图模拟一个有偏差的硬币,它反复翻转,直到两个正面出现在一行或两个反面出现在一行(然后翻转停止)。我想求概率P(一行中两个正面出现在两个反面之前) 正在寻找将“尾部”翻转合并到循环中的帮助。谢谢 flip <- function(bias_p) { n_flips <- 0 head <- 0 tail <
flip <- function(bias_p) {
n_flips <- 0
head <- 0
tail <- 0
while (head != 2 & tail != 2) {
n_flips <- n_flips + 1
head_flips <- sample(c(1,0), 1, prob = c(bias_p, 1 - bias_p))
if(head_flips == 1) ((head <- head + 1) & (tail <- 0))
else ((tail <- tail + 1) & (head <- 0))
}
return(c(head, tail))
}
y <- replicate(5000, flip(0.8))
length(which(y[1,] ==2)) / (ncol(y))
flip为了让您当前的方法发挥作用,我必须做一些更改:
- 每次迭代只生成一个翻转。当前,每次迭代生成两个完全独立的随机结果-
hflip
和tflip
可能彼此不一致
- 如果翻转是头部,则添加到
nheads
并将ntails
重置为0
- 如果翻转为尾部,则添加到
ntails
并重置nheads
(将{}
用于if
/else
可以更清楚地了解逻辑流是什么,您当前的else
仅连接到它上面的行,而不是第一个if
测试)
coin\u flip为了让您当前的方法发挥作用,我必须做一些更改:
- 每次迭代只生成一个翻转。当前,每次迭代生成两个完全独立的随机结果-
hflip
和tflip
可能彼此不一致
- 如果翻转是头部,则添加到
nheads
并将ntails
重置为0
- 如果翻转为尾部,则添加到
ntails
并重置nheads
(将{}
用于if
/else
可以更清楚地了解逻辑流是什么,您当前的else
仅连接到它上面的行,而不是第一个if
测试)
coin\u flip你能展示你到目前为止的代码吗,包括你当前尝试写循环的代码吗?你能展示你到目前为止的代码吗,包括你当前尝试写循环的代码吗?谢谢你的帮助,我相信我是用你提到的类似方法解决的。我将编辑我的原始帖子谢谢你的帮助,我相信我是用你提到的类似方法弄明白的。将编辑我的原始帖子