在著名的演讲“rand() 被认为是有害的”中,使用引擎分布提倡随机数生成范例,而不是经典的 std::rand() 加模简化。
为了测试所提出的主张,进行了一个实验,将 std::rand() 与 std::mt19937 加 std:: 进行比较进行了uniform_int_distribution:
令人惊讶的是,两种方法的总滚动分布相同,这表明 std::mt19937 加上 std::uniform_int_distribution 没有提供任何额外的均匀性。然而,新方法大约慢了 4 倍。
虽然这个实验似乎表明 std::rand() 不一定较差,但重要的是要考虑 std::rand() 的固有局限性:
相比之下,新的
在性能方面,建议 std::minstd_rand 可能是 std 的合适替代品::mt19937 当 LCG 质量足够时,可能会提供更好的速度(特别是在避免使用uniform_int_distribution进行分布调整时)。
最终,随机数生成器的选择取决于应用程序的具体要求,但新的<随机>与传统的 std::rand() 实现相比,该库提供了多个优势,特别是对于需要高质量随机数的应用程序。
以上是新的随机库真的比'std::rand()”更好吗?的详细内容。更多信息请关注PHP中文网其他相关文章!