猜数字游戏

  • 左传1023
    猜数字游戏.规则如下:

    游戏是两个人参加,一个人随便产生4个不同的数字(数字范围是0—9)组成一个四位数。另一个人猜,每次也是猜4个不同的数字(即一个四位数)。对每一位数字来说,如果的数字的数值和位置很答案完全相符,则第一个人给出评价为“1A”。如果数字的值和答案相符,但位置不对,则为“1B”。在八次机会用尽之前猜中全部4个数字的位置和数值,显示4A0B,即胜出。否则机会用尽,则猜数字者失败。

    例:我先写下一个四位数:1980,然后另一个人猜.他猜的结果和我给的评价如下:
    1>1234 1A0B 1的位置和数值都对,故1A
    2>5678 0A1B 8的数值对了,但是位置不对,故1B
    3>9630 1A1B
    4>9803 0A3B
    5>2908 1A2B
    6>1809 1A3B
    7>1908 2A2B
    8>1980 4A 全部猜对,游戏结束!

    TG逻辑男们有兴趣的可以试试,看用什么方法可以保证在最少几次内猜出,凭运气的不算.

    [本帖最后由 左传1023 于 2007-9-2 22:07 编辑]
  • w
    wen314
    疼 真疼
  • O
    OpEth
    以前俺买的文曲星上有这个游戏,经常玩,感觉8次机会是要有点运气才能猜出结果。
  • k
    kiwin
    我以前好易通有个答案是固定的,于是刷记录,前5名都是一次就中,被我同学奉为神人:D
  • O
    OpEth
    刚baidu了一下,看来俺的感觉是正确的,貌似最多需要9次才行,也就是说8次的机会是要靠运气才能猜出,如果有九次机会,那就必能猜出了。
  • 左传1023
    呵呵,我也是从好易通时代过来的,确实有一个数字会经常出现~
  • 左传1023
    嗯,最近和同学一起在研究这个游戏,有些小成果,现在大概90%以上的数字都能在6次之内(包括6次)一定猜出,不凭运气,还有10%在8次内(包括8次)一定可以猜出。想看看有没有更好的方法可以确定最少几次能猜出。

    [本帖最后由 左传1023 于 2007-9-2 22:27 编辑]
  • O
    OpEth
    你的意思是8次就能猜出所有数字么?俺看的是网上有人搞了一个算法,用计算机验证了所有4位数,有部分数字在9次才能猜出。当然这个算法未必是最优化的,不过俺以前也研究过这个游戏,貌似对于一些极端情况,8次的确是不够的。
  • 左传1023
    不好意思,上面的那10%说的可能极端了些,极端情况应该算是小概率事件,我们验证了千次以上,暂时还没有一次超过8次,想请教一下哪些情况下必须第9次才可以猜出来?哪里有那个算法的连接?

    [本帖最后由 左传1023 于 2007-9-2 22:32 编辑]
  • T
    Tales.J
    最高记录一次 用了几个小时收集了两千组数据 大约看出了点概率分布情况 然后试了几次 直到有一次第一次就猜中
  • 左传1023
    呵呵,差不多的,阁下的运气比较好,2000组猜出一次,实际一次就中的概率是5040。
  • O
    OpEth
    又搜索了一下,有些糊涂了,看不太懂。。。。。LZ可以看看

    http://wiki.fattybobo.org/index. ... 504#_note-knuthtc76
  • O
    OpEth
    验证千次以上其实还是不够的,最差的运气的情况可能很难实际遇到,因为概率实在是小得可怜。
  • O
    OpEth
    关于这个最优算法,虽然它是7步就猜出了,但是却未必是在运气最差的时候猜出的,应该事先假设运气是最差的情况来猜才能说明问题。
  • 左传1023
    上面的最优算法已经是包括运气最差的极端情况了啊,就是说通过运行程序验证后的结果,7次之内100%能猜出来。

    极度想知道电脑每一步是通过怎样的方法来猜的。

    我们现在是通过“首定二三换位四加新”的方法猜的。
  • O
    OpEth
    其实我很想知道最难猜的一个数是什么,当然可能不同的算法这个最难猜的数可能不同,但是应该有一个最佳的算法的。
  • O
    OpEth
    又找到一篇文章,里面说有一种算法6步即可算出所有结果。。。。。俺都糊涂了,到底tmd要几步?

    http://blog.csdn.net/jyk/archive/2006/03/04/615153.aspx
  • 左传1023
    多谢LS,不过上面的那个6步算法,个人觉得不大可能,因为在我和朋友算的过程中碰到一种情况,就是

    第一步:0A2B
    第二步:0A1B
    第三步:1A1B

    碰到这种情况时必然不会在6步算出来,也就是我上面说的在10%的概率中的。

    [本帖最后由 左传1023 于 2007-9-2 23:27 编辑]
  • O
    OpEth
    看来最少应该是7步,不过在最优化的算法下需要7步才能猜出的数字很少,98%的数字都可以6步就猜出,不过人脑完全达不到这个水平啊。。。。。
  • 左传1023
    这篇讨论蛮好的:http://www.javaworld.com.tw/jute ... amp;tpg=1&age=0

    我们算到六次的时候就不行了,纯人脑分析啊,枚举了N种情况,到第七次不敢搞了,就是上面我说的那三步,工作量太大。。。

    不过现在毕竟90%的概率可以六次猜出,可以用这个方法骗骗学校小姑娘,呵呵,争取一炮当爹:D :D :D

    [本帖最后由 左传1023 于 2007-9-2 23:46 编辑]
  • O
    OpEth
    目前看到7次最少的算法是只有54个数7次猜出,差不多1%的可能性,99%都可以6次猜出,看来文曲星让俺猜8次还是让了一手的,汗。。。。。

    [本帖最后由 opeth 于 2007-9-2 23:52 编辑]
  • 左传1023
    嗯,文曲星的我也猜过,当时只能8次猜出来,最近还没开课,比较无聊又和朋友开始玩这个,然后就找起方法来。

    好易通的巨傻无比,大概30%的概率会出一个特定的数字:3157,好象是这个,所以经常一次猜中。。。
  • O
    OpEth
    人脑在数字计算上还是差电脑一大截啊。。。。。