所以我有以下作业,但我并不完全明白这个过程是什么。有没有人见过这个问题或者实际上了解逻辑应该是什么?我不想要代码,我知道如何编程,但我不知道该怎么做。
考虑一条线,数据逐位传输。偶尔,有点或一组 连续的比特传输不正确。如果前一位正确传输,则 当前比特传输错误的概率是0.1。如果前一位是 传输不正确,当前位也传输错误的概率 是0.3。编写一个名为BitError.java的程序,模拟一百万的传输 位和打印输出错误的位百分比。 (提示:根据理论,预期答案是12.5%。)
答案 0 :(得分:2)
您可以按如下方式测试事件发生的概率
您的代码看起来应该是这样的
// 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应该很容易。