只要并发调用不导致seg‘s或返回相同的值,当这些错误的主要影响是不可预知的结果时,防止PRNGs中的争用条件和数据损坏的原因是什么?
编辑:是否有任何PRNG不会在竞争条件和数据损坏的情况下遭受损失?
发布于 2009-03-05 21:32:10
PRNG是精心构建的工具--坦率地说,如果争用条件和线程错误是一个很好的PRNG,那么实现就是这样写的。
添加线程错误以增加随机性的问题是,这是对生成器的一个未经研究的更改。已经对现有的安全算法和实现进行了详尽的测试;如果您想尝试一个不安全的变体,则需要进行统计分析,以表明它至少与普通PRNG一样随机。
发布于 2009-03-05 21:42:24
当这些错误的主要影响是不可预测的结果,而这就是PRNG的要点?
“随机”与不可预测的不一样--如果你想要真正的随机数,随机指的是一个非常重要的分布,如果你想要真正的随机数。如果您的随机数在任何方面都是可预测的,则可能是安全问题,或者至少是程序错误。
发布于 2014-11-27 00:18:23
它通常会使它们不那么确定(如果你依赖于它们的确定性(许多人都这样做),并且可能会或不可能减少它们的伪随机性,这取决于它们的具体实现细节和硬件工作方式的微妙性。
但是通常情况下,编写多线程应用程序的人会在TLS (线程本地存储)中声明它们的PRNG状态。这样并不重要,每个线程都有自己的PRNG,除非您有意创建它们,否则不会发生种族冲突。不管怎么说,在PRNG代码中没有。这是无锁和或多或少的全面性能(取决于所使用的TLS实现)。
https://stackoverflow.com/questions/616434
复制相似问题