如何通过电线模拟错误的位传输?

时间:2011-08-17 02:39:50

标签: java probability

所以我有以下作业,但我并不完全明白这个过程是什么。有没有人见过这个问题或者实际上了解逻辑应该是什么?我不想要代码,我知道如何编程,但我不知道该怎么做。

  

考虑一条线,数据逐位传输。偶尔,有点或一组   连续的比特传输不正确。如果前一位正确传输,则   当前比特传输错误的概率是0.1。如果前一位是   传输不正确,当前位也传输错误的概率   是0.3。编写一个名为BitError.java的程序,模拟一百万的传输   位和打印输出错误的位百分比。   (提示:根据理论,预期答案是12.5%。)

4 个答案:

答案 0 :(得分:2)

您可以按如下方式测试事件发生的概率

  1. 生成介于0和1之间的均匀随机数
  2. 如果生成的数量少于发生事件的概率,那么事件就会发生
  3. 您的代码看起来应该是这样的

    // Generate random bit either a 0 or a 1
    int bit = RandInt(0,1)
    
    // Assume first bit was correct
    bool bPreviousWasCorrect = false;
    
    Loop 1 million times
        double probBitIsCorrect = RandUnif(0,1) // get a random number between 0 and 1
        if bPreviousWasWrong then
            // if an error has occured then a 2nd error occurs with prob 0.3
            if (probBitIsCorrect < 0.3)  then
               Set bPreviousWasWrong to true
               increment number of wrong bits
            else
               Set bPreviousWasWrong to false
               increment number of correct bits
            end if
        else
            if (probBitIsCorrect < 0.1)  then
               Set bPreviousWasWrong to true
               increment number of wrong bits
            else
               Set bPreviousWasWrong to false
               increment number of correct bits
            end if
    
    Display results when done
    

答案 1 :(得分:1)

他们希望你写一个模拟器。你做了一个循环,它做了一百万次迭代,每次迭代代表一位的传输。每次你根据这两个规则随机决定该位是正确还是错误传输,并保持计数。

最后,您的模拟将告诉您正确传输了多少位(显然应该接近87.5%)。

答案 2 :(得分:0)

好的,所以你需要逐位“传输”数据,并在每次迭代时计算概率。

让我们考虑第一位的传输是具有先前正确传输的位的概率。这意味着第一位正确传输的概率是0.9

下一次迭代: 如果第1位被正确传输,则概率0.9为正确,否则为0.7

答案 3 :(得分:-1)

这就是为什么它被称为家庭作业....它是设计的,所以你不知道该怎么做。

问题与递归和迭代有关。 Google: Recursion。给定当前状态(无论前一位是否正确传输),您可以计算当前位正确传输的概率。之后,获得12.5%的概率很简单(例如乘法)。您甚至可以在不循环遍历所有位的情况下执行此操作,具体取决于您知道的统计数据。

最后你应该知道关于递归的所有信息。这就是作业的真正含义。你的基本情况是什么(即第一位)以及你的递归步骤(即其后的每一位)是什么?一旦你理解了这一点,编写Java应该很容易。