• 软件测试技术
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘

字号: | 推荐给好友 上一篇 | 下一篇

软件测试悖论

发布: 2008-7-07 12:57 | 作者: James McCaffrey | 来源: 领测软件测试网采编 | 查看: 171次 | 进入软件测试论坛讨论

领测软件测试网 软件测试技术门户k N2g1Rv3V r%M9I

)C0K?$U\g*~b软件测试技术门户`W,iLE^?&_
软件测试技术门户8f#_8z*v U AL
Parrondo 悖论
3Zd,J+@B tU
b~9cQv&F g   本质上, Parrondo 悖论陈述的是两个要输的赌博游戏(我们称他们为游戏 A 和游戏 B ),它们可以被设计好,这样如果一个接一个地玩,它们可以成为赢得游戏。有很多方法可以构造 Parrondo 悖论的例子,最简单的事使用三个有偏差的硬币。
6i6L|kt(u  游戏 A 是一个简单的掷硬币游戏。你掷出一枚硬币,如果硬币正面朝上,你赢 1 元,如果硬币正面朝下,你输 1 元。硬币 1稍微有点偏差,这样它正面朝上的概率是 p1=0.495 (故正面朝下的概率就是 1-p1=0.505)。如果你不停的玩这个游戏,你最终会输钱。游戏 B 有点复杂,使用两个硬币。这个游戏中的第一个硬币(硬币 2 )有一个赢(正面朝上)的概率p2=0.095 。这是一个很糟糕的硬币。第二枚硬币(硬币 3 ),有一个赢的概率 p3=0.745 。这是一个很好的硬币。
]qR)nM-U(k   你从一定数目的钱开始玩这个游戏,例如 300 元。为了玩游戏 B ,你需要两个步骤 : 先要检查你的钱数是否是 3的倍数(例如 300 元、 297 元、 303 元等等)。如果你目前的资金是 3 的倍数,你掷硬币 2 ,要不是赢 1 元就是输 1元。如果你目前的资金不是 3 的整数倍,你掷硬币 3 ,赢 1 元或输 1 元。尽管不是很明显,如果你不停的玩游戏 B ,你还是会输钱。
$?ye x]n8cp z]   在这一点上,我们有两个要输的游戏。如果我们按照一种随机模式或者是固定模式来玩游戏 A 和 B,你认为会发生什么?令人惊奇的是,如果一起玩,这两个要输的游戏最后会赢!本专栏附带的代码给出了一个用 C# 写的仿真。图 6是运行这个程序的一个屏幕截图。软件测试技术门户$m,{0q8^8Rw+S$O p#Jj

8q\kc*CT5jb,t 软件测试技术门户o4b-C0Wa0j [s
Figure 6 Parrondo''s Paradox in Action
*u7|$P| Mq?F&QR 图6 Parrondo 悖论仿真
b jAlh E/{
^%P YB$h K:|_,g  这个游戏是由西班牙心理学家 Parrondo 创造的。 1999 年, G.P.Harmer 和 D.Abbott 发表了文献“Losing Strategies Can Win by Parrondo''s Paradox ”,以 Parrondo给这个悖论命名。从那以后,在这个游戏和它的变种上出现了很多的研究,包括改变三个硬币的概率影响和改变玩游戏 A 和 B 的模式。
4{M#d*B;D6g TZ(FR%X