高效生成均匀分布的随机整数
在编程领域,生成随机数在各种应用中起着至关重要的作用。在这些任务中,创建均匀分布的随机整数是一个常见的要求。让我们探索现有方法的局限性,并提出一个优化的解决方案,以满足速度、均匀性、可变范围和可播种性的特定要求。
朴素方法的局限性
使用 rand() 函数的简单方法由于排除了最大边界值而无法提供真正的均匀性。为了解决这个问题,提出了第二个公式,但实验显示分布不均匀。
最佳解决方案:利用 C 标准库
幸运的是,C 标准库提供了生成无偏随机数的综合解决方案:
以下 C 代码片段演示了实现:
#include <random> std::random_device rd; // Random device for seed initialization std::mt19937 rng(rd()); // Random-number engine using Mersenne-Twister std::uniform_int_distribution<int> uni(min,max); // Distribution class for uniform integers auto random_integer = uni(rng);
此方法具有显着的优势:
通过利用 C 标准库,您可以毫不费力地高效可靠地生成均匀分布的随机整数,无需复杂的公式或重新发明轮子。
以上是如何在 C 中有效生成均匀分布的随机整数?的详细内容。更多信息请关注PHP中文网其他相关文章!