假设您在选择错误位突发的长度时对集合[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