我认为这并不重要,但我无法证明这一点。
模糊测试只会尝试一些输入,在大多数情况下,可能性很小。无论您使用的 RNG 有多好,它可能会或可能不会找到破坏您的代码的输入之一,这取决于所有可能的输入中破坏您的代码的比例。除非 PRNG 中的模式非常简单,否则在我看来,它不太可能以任何方式与您正在寻找的“坏”输入中的模式相对应,因此它不会多于或少于真正的随机。
事实上,如果你知道如何选择一个 RNG 来最大化它找到错误输入的概率,你可能会使用这些知识来帮助更直接地找到错误......
我认为您不应该使用非常糟糕的 PRNG。rand例如,允许展示非常简单的模式,例如 LSB 交替。如果您的代码在内部使用 PRNG,您可能希望避免在测试中以类似的方式使用相同的 PRNG,以确保您不会意外地仅测试输入数据与内部生成的数字流匹配的用例!当然,风险很小,因为您希望他们会使用不同的种子,但仍然如此。
在给定的语言中,找到加密或至少是安全的哈希库通常并不难。SHA-1 无处不在,并且易于使用来生成流,否则 RC4 对自己的实现是微不足道的。两者都提供了相当不错的 PRNG,虽然不如 Blum Blum Shub 安全。我认为主要关注的是速度 - 例如,如果 Mersenne Twister 可以以 10 倍的速度生成模糊测试用例,并且被测代码相当快,那么它可能更有可能在给定的情况下找到错误的输入时间不管给定 624 个输出,您都可以推断出 RNG 的完整状态...