gpt4 book ai didi

c++ - std::uniform_real_distribution 和 rand()

转载 作者:IT老高 更新时间:2023-10-28 23:12:23 27 4
gpt4 key购买 nike

为什么 std::uniform_real_distributionrand() 作为随机数生成器更好?有人可以举个例子吗?

最佳答案

首先,应该明确提出的比较是荒谬的。

uniform_real_distribution不是随机数生成器。您不能从 uniform_real_distribution 生成随机数没有将随机数生成器传递给它的 operator() . uniform_real_distribution将该随机数生成器的输出“整形”为均匀的实数分布。您可以将各种随机数生成器插入到一个发行版中。

我不认为这是一个合适的比较,所以我将比较 uniform_real_distribution 的使用情况。使用针对 rand() 的 C++11 随机数生成器而是。

另一个使比较变得不那么有用的明显区别是 uniform_real_distribution用于产生 float ,而 rand()产生整数。

也就是说,选择新设施有几个原因。

rand()是全局状态,而使用 <random> 中的设施时不涉及全局状态:您可以拥有任意数量的生成器和分布,并且它们都相互独立。

rand()没有关于生成的序列质量的规范。 C++11 中的随机数生成器都经过了明确的规定,分布也是如此。 rand()实现可能并且在实践中质量很差,而且不是很统一。

rand()提供预定义范围内的随机数。由程序员将该范围调整到所需范围。 这不是一个简单的任务。不,使用 % 的东西是不够的。以如此幼稚的方式进行这种调整很可能会破坏原始序列中的任何一致性。 uniform_real_distribution正确地为您进行此范围调整。

关于c++ - std::uniform_real_distribution 和 rand(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13491621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com