我想为我的程序模拟错误爆发,但我不确定我将如何去做。
假设我有 2/10 的固定误码率和从 4 位到 12 位的不同错误突发长度以及无限的位流,我怎样才能使它以随机间隔发生错误突发长度不同从 4 位到 12 位,同时仍确保平均误码率收敛到 2/10?
我想为我的程序模拟错误爆发,但我不确定我将如何去做。
假设我有 2/10 的固定误码率和从 4 位到 12 位的不同错误突发长度以及无限的位流,我怎样才能使它以随机间隔发生错误突发长度不同从 4 位到 12 位,同时仍确保平均误码率收敛到 2/10?
[4, 5, ..., 12]
假设您在选择错误位突发的长度时对集合进行统一采样。那么错误突发的预期长度为(4+5+...+12)/9 = 8
。
注意:您可以根据需要对错误突发长度进行采样 - 我们在下面实际使用的只是对错误突发长度的期望。
如果你想要一个整体的误码率2/10
,你所要做的就是:
error_lengths = [4, 5, 6, 7, 8, 9, 10, 11, 12]
loop forever
if rand() < 1/33 // with probability 1/33
n = rand(error_lengths) // pick a random error length
emit n contiguous error bits
else
emit 1 good bit
这样做的原因是,平均而言,对于每 33 次迭代,if
条件是true
1 次和false
32 次。每个true
平均产生 8 个错误位;每个false
创造 1 个好位。
因此误码率为(1*8)/(1*8 + 32*1) = 8/40 = 2/10
。
如果你想保证没有两个错误序列是相邻的,你可以这样做:
error_lengths = [4, 5, 6, 7, 8, 9, 10, 11, 12]
loop forever
if rand() < 1/32 // with probability 1/32
n = rand(error_lengths) // pick a random error length
emit n contiguous error bits
emit 1 good bit
每次迭代的预期好比特数 = 1 每次迭代
的预期错误比特数 = 8/32
错误率 = (8/32)/(1+8/32) = 8/40 = 2/10
您告诉我们一个范围,但没有指定错误突发长度的分布,也没有指定干净间隔长度的分布。范围内的所有值是否同样可能,4 是否比 12 更频繁地出现,反之亦然,或者说,6 是最常见的情况?
假设您有错误突发长度的分布E和干净间隔长度的C分布,它们分别具有 M_ e和 M_ c的平均值。然后您需要做的是派生/构造C分布的参数化,以便 M_ c = 4 M_ e。要启动该过程,请为您的第一个间隔选择概率为 0.2 的错误突发与概率为 0.8 的干净间隔。然后使用E和C分布在错误周期和干净周期之间交替以生成持续时间。
例如,如果两种类型的间隔都遵循均匀分布,则平均错误突发长度为 8,您需要平均长度为 32 的干净间隔。您可以使用 U(31,33)、U(1,63) 来实现,或 U(10,54),例如 - 所有三个都有 32 的手段。