Nicky Cat 2022-06-18 11:21 采纳率: 100%
浏览 82
已结题

一个不断生长的概率问题

问题遇到的现象和发生背景

昨天,我老公突然说,他高中的时候想到一个问题,一直没有得到解答,念头不通达。
问题是这样的:
一个箱子里有100个白球,每次随机抓一个后放回,抓到白球涂成红色,抓到红球直接放回;
这样抓100次之后,再抓到红球的期望是多少?

我当时觉得这个用编程算挺容易的,就写了下面的代码:

问题相关代码,请勿粘贴截图
rm(list = ls())
x = c(1)
r = c(1)
all_p = numeric()

for (i in 1:15) {
  new_x = numeric()
  new_r = numeric()
  p = numeric()
  for (j in 1:length(x)) {

    y_1 = x[j]
    y_2 = x[j] + 1
    r_1 = r[j] * (x[j]/100)
    r_2 = r[j] * ((100 - x[j])/100)
    p_1 = r_1 * (y_1/100)
    p_2 = r_2 * (y_2/100)
    new_x = append(new_x, c(y_1, y_2))
    new_r = append(new_r, c(r_1, r_2))
    p = append(p, c(p_1, p_2))
  }

  x = new_x
  r = new_r
  p = sum(p)
  print(paste0("After ",(i + 1) , ' Times, E for red ball is ', round(p * 100, 2)))
  all_p = append(all_p, p)
}

plot(x = 1:length(all_p) + 1,
     y = all_p  * 100,
     type = 'b',
     xlab = 'Times',
     ylab = 'E for Red Ball')
运行结果及报错内容

虽然开始运行很顺畅,但越到后面算量越大。我的笔记本吃不下了。

我的解答思路和尝试过的方法

下面是我的测试:

[1] "After 2 Times, E for red ball is 1.99"
[1] "After 3 Times, E for red ball is 2.97"
[1] "After 4 Times, E for red ball is 3.94"
[1] "After 5 Times, E for red ball is 4.9"
[1] "After 6 Times, E for red ball is 5.85"
[1] "After 7 Times, E for red ball is 6.79"
[1] "After 8 Times, E for red ball is 7.73"
[1] "After 9 Times, E for red ball is 8.65"
[1] "After 10 Times, E for red ball is 9.56"
[1] "After 11 Times, E for red ball is 10.47"
[1] "After 12 Times, E for red ball is 11.36"
[1] "After 13 Times, E for red ball is 12.25"
[1] "After 14 Times, E for red ball is 13.13"
[1] "After 15 Times, E for red ball is 13.99"
[1] "After 16 Times, E for red ball is 14.85"

img

我想要达到的结果

求个道友把程序跑一下;
或者,除了这种直球的解法,还有没有什么好的方法?这答案不算出来,念头不通达,谢谢各位了!

  • 写回答

2条回答 默认 最新

  • 微笑精灵 2022-06-20 14:25
    关注

    为什么我算的是二分之一?从结果的角度来说只有两种结果,也就是二分之一。
    我们可以遍历所有结果。也就是2的101次方。
    但是无论怎么算,最后一个是红球的结果数量永远是总数的1/2
    #############
    好吧不闹了,实际上计算应该是。当最后一位固定为红色,此时我们有2的98次幂调数据链
    因为第一位必定是白色。
    此时我们遍历这些数组,将其反转过来实际上就是一个1开头的二进制数据我们从尾部开始遍历,因为结果已经固定所以我们可以很轻易的计算他的结果所带来的概率,也就是从倒数第二位算到第一位。
    这个时候我们就得到了结果集合,然后再用这个集合算概率。
    或者我们可以真正的算他的全结果概率。
    也就是1000的101次幂,其中最后一次和前面有重复的数量是多少。
    %%%%%%
    我跟我同事说了一下这个问题,现在他也自闭了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月26日
  • 已采纳回答 6月20日
  • 创建了问题 6月18日

悬赏问题

  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?