我必须生成两个随机位数组。要求是生成只有10%误码率的数组,即2个数组之间的元素比较应该给我们大约90%的元素。
我分别使用rand函数生成数组,它导致两个数组中大约40%到60%的相同元素。为了减少到10%,我试图在一个数组中找到随机位置以将其替换为1,但它会破坏随机性。它可能不是优雅的方式,对于大数字它不起作用(我需要测试数组中的10,000位)。任何人都可以建议我如何生成两个错误非常少的随机二进制数组。
答案 0 :(得分:9)
假设我理解你,这意味着第二个数组实际上并不是“随机”。它依赖于第一个数组,但随后有10%的位被翻转(产生10%的错误)。因此,我建议您遵循以下算法:
注意:如果您想要10%的误差,请确保您不仅仅选择随机元素n/10
次,因为您将不可避免地将相同的位反转两次。您必须选择n/10
不同的元素才能反转。但是,如果您希望最大误差为10%,那么故意引入重新反转单个位(并因此纠正它)的可能性可能是有利的。