有一个二进制序列,已知0出现的概率(当然,1出现的概率也就知道了),有什么方法比较好地预测该二进制序列最后一位的下一位是什么?请帮帮忙,我分数不多,555~

解决方案 »

  1.   

    这个预测的作用是什么?如何评价预测结果的好坏
    如果只预测一位,感觉几乎不可能有好的办法
    我的想法是兼顾二进制位本身的出现概率和序列中数据位出现的总概率。
    1. 长度N的序列中,0已经出现m次,0在序列中的概率是m/N,与理论期望值如0.8比较,得出一个更有希望的值
    2. 数据位本身的概率,只好产生随机数,跟概率比较,看落在哪个空间了
    3. 考察历史序列,看能否得出0,1的分布规律。如果0是0.8,而几乎每5个01序列中只有一个1,那么可以考察1在5个数序列中是如何分布的,均匀分布,只在某些位置?
      

  2.   

    to:ltc_mouse
    谢谢,评价预测结果好坏是提供N个序列,然后截取每个序列最后一位前的所有位作为输入,
    根据返回结果跟原序列最后一位相同的个数与N的比来判断该方法的好坏。
    只提供概率,没有说明是否是均匀分布。
      

  3.   

    发表于:2007-12-15 16:05:554楼 得分:0 
    to:ltc_mouse 
    谢谢,评价预测结果好坏是提供N个序列,然后截取每个序列最后一位前的所有位作为输入, 
    根据返回结果跟原序列最后一位相同的个数与N的比来判断该方法的好坏。 
    只提供概率,没有说明是否是均匀分布。 楼主是说已知序列中0出现的概率,以及该序列中除最后一位的所有位,然后预测最后一位么?如果那样的话,那就好办了啊
    已知:0出现的概率(设为x),
    设N为序列长度
    然后统计每个序列最后一位前的所有位出先的0的个数(设为a),
    if(a/N==x)
      最后一位为1
    else
      最后一位为0
      

  4.   

    to:icannotfly我现在给出一个2进制序列,11111111111111
    并告诉你该序列中1出现的概率为1,0出现的概率为0
    谁来说说该序列最后一位的下一位出现0或者1的概率??冒似没什么关系吧?如果序列中1出现的概率为1那么该序列最后一位的下一位当然还是1了。
    楼主是说已知序列中0出现的概率,以及该序列中除最后一位的所有位,然后预测最后一位么?如果那样的话,那就好办了啊
    已知:0出现的概率(设为x),
    设N为序列长度
    然后统计每个序列最后一位前的所有位出先的0的个数(设为a),
    if(a/N==x)
        最后一位为1
    else
        最后一位为0 
    当然不是这样的,这样的话就简单啦~呵呵~
    是预测,当然不是说加上预测出来的那位就刚好跟给出的概率吻合了。
    应该没有绝对预测正确的方法。
    嗯,或者可以这样表述,
    有一个二进制序列,已知0出现的概率,有什么比较好的方法找出其中隐含的规律,并预测该二进制序列最后一位的下一位是什么?
      

  5.   

    回复9楼:请教为什么
    color=#FF0000]如果序列中1出现的概率为1那么该序列最后一位的下一位当然还是1了。[[/color] 该序列的概率是否能够直接应用到该序列以外并且成立?
      

  6.   


    to:icannotfly 
    Java code我现在给出一个2进制序列,11111111111111
    并告诉你该序列中1出现的概率为1,0出现的概率为0
    谁来说说该序列最后一位的下一位出现0或者1的概率??冒似没什么关系吧?如果序列中1出现的概率为1那么该序列最后一位的下一位当然还是1了。 为什么?最后一位的下一位是1,是否是说该序列最后一位的下一位(已经不在该序列内了),也必须具有和该序列同样的概率?
      

  7.   

    假设1出现的概率为0.8
    if(Math.random()>0.8){
      return 1;
    }
    else{
    return 0;
    }
      

  8.   

    好像错了反过来了
    public static int gener(double r){
    if(Math.random()<=r){
    return 1;
    }
    return 0;
    }
      

  9.   

    谢谢两位,HelloWorld_001的方法我试过了,正确率在50%左右,
    piaopiao11的方法正是我用来生成测试用例的方法。
      

  10.   

    不太明白楼主的意思,如果你说这个序列中0的概率是a的话,那么任何一位是0的概率都a,与历史序列都没有任何关系,这个是标准的概率概念。
    如果你说是这个序列总共有X位,其中是0的位数总共是a,那么这个问题才与历史序列存在关系,
    概率为(a-历史序列中0的位数)/ (X-历史序列长度)
      

  11.   

    这个贴本来是发在
    http://topic.csdn.net/u/20071212/14/d09b3bac-8d21-4a32-8942-006089eee15e.html
    不过没人关注。我想能否用人工智能的一些算法提高正确率。
      

  12.   

    我想可以用当前的0与1出现的概率与预期的概率作比较,如果当前出现0的概率比预期的高,那么下一个应该出现1,才会使当前概率趋向于预期值;反之则应出现0,使当前概率趋向于预期值。比如说吧,预期的概率分别是1:70%,0:30%,当前序列为11010001110010110111,当前的概率为1:60%,0:40%,
    1比预期的概率低,而0则比预期的概率高,因此下一个位应该出现1,才会使当前概率变成1:65%,0:35%,更趋近于预期的概率。至于具体的算法,我想如果二进位的总量不算太大的话,可以建立一个数组Total[2],Total[0]累加0位的数量,Total[1]累加1位的数量,预测的时侯就是计算Total[0]/Total[1]了,然后与预期的比率比较,来估计下一位可能是什么。
      

  13.   

    to:fiveyes谢谢,这种方法我在20楼说过了,正确率在50%左右。
    下面是我的10次试验结果。获取被测试序列的方法类似19楼。当1出现概率为0.6时,预测一个长度为2048的序列的下一位的正确率
    RP=0.50244140625
    RP=0.5087890625
    RP=0.47412109375
    RP=0.49169921875
    RP=0.49609375
    RP=0.50439453125
    RP=0.5205078125
    RP=0.50341796875
    RP=0.4951171875
    RP=0.4931640625当1出现概率为0.8时,预测一个长度为2048的序列的下一位的正确率
    RP=0.49365234375
    RP=0.486328125
    RP=0.513671875
    RP=0.49072265625
    RP=0.498046875
    RP=0.486328125
    RP=0.5
    RP=0.49951171875
    RP=0.5146484375
    RP=0.5078125
      

  14.   

    to:piaopiao11你的想法
    “或者lz可以更进一步统计一下前面序列的信息,
    比如:连续2次0或者1出现的概率 ”

    跟我差不多,我想找出更多特征,然后统计历史序列中符合这些特征的频率,
    然后根据各特征的正确率和预测值决定下一位应该取什么值。
    不知道这个思路怎么样。
    而且,如果这个思路可以的话,需要选什么特征比较好也很难确定
    比如“连续2次0或者1出现”等等,该选择什么特征才比较合理呢。
      

  15.   

    还有点分在这里
    http://topic.csdn.net/u/20071212/14/d09b3bac-8d21-4a32-8942-006089eee15e.html
    上面得了分的兄弟有空去接,呵呵,先到先得。