程序员的苦恼

电脑中有一款比较简单的游戏:蜘蛛扑克。难度也可以从一种花色、两种花色、到四种花色。

这个游戏的核心技巧,就是堆栈(stack)技术,对于计算机软件专业的人员来说,这其实是一项基本技术。所以,我如果有时玩这个游戏的话,总是选择四种颜色的难度,取得若干连胜也是比较常见的。

这个游戏有个规则,就是有空位时,是不许发牌的。我现在的问题是,如果上面的扑克数量不足十张的时候,怎么办?会出现这样的问题吗?

要出现这个上面说的问题,就必须满足,最后一组没有发出的牌,必须是同一种花色且不能重复。(事实上,最后剩下两组时,保证花色不超过两种,且分组之后不重复;最后剩下三组时,保证花色不超过三种,且分组之后不重复。都是可能出现问题的。这里不讨论这部分。)

这样的概率是多大呢?

对于四种颜色,概率为 4C(13,10)/C(52,10),概率大致是亿分之7。

对于二种颜色,概率增大了512倍,大致是十万分之3.7。

对于一种颜色,概率再增大了512倍,大致是百分之1.9。

也就是说,出现最后十张没有发出来的扑克是完全不重复的,在选择一种颜色的难度时,概率还比较大。为了找到这样的现象,就反复发扑克,并检验最后的十张扑克,大约数十次之后,就出现了期望的结果。

这个结果有什么用呢?会出错!

我们不妨假定,这个程序非常的优秀,并且经过千锤百炼的检验,但事实上它还是会出现错误。这种不易被发现的错误,就是程序员的苦恼,就是你很难保证程序完全正确。这或许算作一个实例。

图片发自简书App

图一:最后十张扑克出现完全不重复的情况。

图片发自简书App

图二:游戏进行中。由于程序的错误,导致无法继续了。解决的办法,要么允许上面的扑克,不足十张时,有空位可以发牌;要么不允许“最后一组十张扑克是一套花色且不重复”。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我是阿曌,90后,一只还不成熟的女程序猿。 去年7月份,我毕业了,在大学学习了C++和JAVA,现在在深圳一家企业...
    阿曌阅读 5,192评论 14 21
  • 做女程序员已有一年了,但现在任然连一份正经的工作都没有,悲催啊……之前自学了一点php,后来又转行了,改去学Jav...
    小桥流水我家O阅读 1,774评论 0 0
  • 最近APP版本更新,主要改进逻辑。我滴个神,我真的是用了工作日3天才搞定,真心觉得我的逻辑思维能力太差。 可是吧!...
    为心而狂阅读 2,915评论 4 2
  • 你的数学直觉怎么样?你能凭借直觉,迅速地判断出谁的概率大,谁的概率小吗?下面就是 26 个这样的问题。如果你感兴趣...
    cnnjzc阅读 11,904评论 0 12
  • 最好的爱莫过于你爱的人也同样爱你。 希望我未来的每一天都有你的参于。 你的一生我只借一程,这一程便是余生。 你若给...
    90后的幼儿园老师阅读 2,405评论 0 4