c++ - 为什么 C++ stdlib rand() 函数跨平台为同一个种子提供不同的值?

标签 c++ c random std

我知道 rand() 函数会根据给定的种子生成伪随机数,并且在给定的平台上,它总是会从同一个种子生成相同的数字序列,我想知道的是为什么它在使用相同库的平台之间给出不同的序列? IE。 rand()是如何实现的?

最佳答案

C++ 标准没有指定 rand() 函数使用什么算法。

功能由在您的系统上编写标准库的人定义:Microsoft 负责 Visual Studio 附带的标准库,GNU 人员负责 GCC 打包的标准库。

您的编译器正在选择从何处获取其库,因此对于同一系统上的不同编译器,您可能有不同版本的标准库。要点保持不变:规范保证了哪些功能可用以及它们做什么;不是他们怎么做的。

关于c++ - 为什么 C++ stdlib rand() 函数跨平台为同一个种子提供不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15109427/

相关文章:

用于抛硬币问题的 Python 代码

Java生成非重复随机数

c++ - 为什么 C++ 不允许向类中添加新方法?

c - 多个 TCP 流相互干扰

将指针转换为连接

c - 查找给定字符串是回文还是不是回文

java - 如何测试使用 Random() 但不能两次选择相同数字的方法

c++ - 如何在运行时设置常量配置参数

c++ - 将 mpl::fold 与占位符和我自己的结构事故一起使用

c++ - 同时使用 openGL 绘制两个对象