R语言 二进制序列的概率

njthzxwz  于 2023-06-19  发布在  其他
关注(0)|答案(1)|浏览(120)

假设我有n个球,x蓝色和(n-x)红色。如果我随机地一次抽一个球,连续抽到k个蓝色球的概率是多少?
我在模拟高尔夫球。我很好奇连续出现k+小鸟+的概率是多少。我正在使用多项模拟器来模拟在一轮的水平,而不是孔由孔。因此,我想利用我在18个中有x个小鸟球+的事实,计算出k+连胜存在的概率,然后把这个概率放入一个二项式来记录连胜的成功/失败。现在我只是在R中使用下面的函数,它不是很快(x是x+小鸟的向量,每个被模拟的球员一个元素)

golf_streak <- function(x,k){
  test <- lapply(x, function(i) {sample(c(rep(1, i), rep(0, 18 - i))) })
  t <- lapply(test, rle)
  as.numeric(sapply(t, function(rl) any(rl$lengths[rl$values == 1] >= k)))

}

x-posted here https://math.stackexchange.com/questions/4719474/probability-of-sequence-with-binary-data

kcrjzv8t

kcrjzv8t1#

我仍然没有找到一个精确的解决方案,但我找到了一个非常有效的计算解决方案。对于k的每个值,我运行上面的代码n次,并存储一个非常大的n的成功次数。这为条纹的概率提供了相当好的估计。我将这些值保存在csv中,以data.frame的形式上传,然后连接该表以获得条纹的概率。所以我不再需要在飞行中计算。不过能得到一个确切的答案还是很好的。

相关问题