基于R

基于R,r,statistics,simulation,probability,distribution,R,Statistics,Simulation,Probability,Distribution,我试图模拟一个有偏差的硬币,它反复翻转,直到两个正面出现在一行或两个反面出现在一行(然后翻转停止)。我想求概率P(一行中两个正面出现在两个反面之前) 正在寻找将“尾部”翻转合并到循环中的帮助。谢谢 flip <- function(bias_p) { n_flips <- 0 head <- 0 tail <

我试图模拟一个有偏差的硬币,它反复翻转,直到两个正面出现在一行或两个反面出现在一行(然后翻转停止)。我想求概率P(一行中两个正面出现在两个反面之前)

正在寻找将“尾部”翻转合并到循环中的帮助。谢谢

 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你能展示你到目前为止的代码吗,包括你当前尝试写循环的代码吗?你能展示你到目前为止的代码吗,包括你当前尝试写循环的代码吗?谢谢你的帮助,我相信我是用你提到的类似方法解决的。我将编辑我的原始帖子谢谢你的帮助,我相信我是用你提到的类似方法弄明白的。将编辑我的原始帖子