例子猜 50
系统:大了
猜 20 
系统:小了
猜 25
系统:对了猜系统未知的随机数求最优算法

解决方案 »

  1.   

    我的想法是,用信息论的思路来看的话,假定系统产生的随机数是真正的随机的话,那么一开始这个系统的信息熵就是log(100)如果猜50,那么系统可能回答大了,小了,或者对了,三者的概率分别为49%,50%,1%,所以系统回答后的信息熵的数学期望为49%×log(49)+50%*log(50)+1%*log(1)=49%×log(49)+%50×log(50);
    假设现在可能的范围是N个数,我们准备猜第k个数,那么为了使效率最高,我们应该使猜了k之后的信息熵的数学期望最小。这个数学期望为 (k-1)/N*log(k-1)+(N-k)/N*log(N-k),求得导数为1/N*(log(k-1)-log(N-k)),令导数等于0 ,得k-1=N-k,即k=(N-1)/2。
    所以我认为每次都应该猜(N-1)/2那个数。
    【以上的log都是以e为底的】
      

  2.   

    当然,如ceature(阿猫) 同志所说,如果游戏有统计规律,不是真正的随机的话,我说的就不对了。
      

  3.   

    bighead_lz(大头)不木嘛。呵呵
    不过实践中,有人提出使用黄金分割点。
      

  4.   

    黄金分割。见<十万个问什么>。数学一(好像是一)
    很老的那版,封皮是黑的。上面有部分红色。