我在C中交叉rand(),发现srand()只能保证同一台机器的再现性,但不能保证不同平台的再现性.

由于我已经使用了我的srand(926)并完成了一个相当耗时的模拟,我想找到rand()的定义.因此,我也可以在不同的平台上得到相同的结果.

有人能给我指一下GCC 9.3.0srand()的定义吗?

谢谢

推荐答案

gcc是一个编译器,因此它本身没有实现.srand是C标准库(libc)的一部分,在您的系统上很可能是glibc实现的.

以下内容将在编写本文时使用glibc的主分支尖端.系统上使用的版本可能不同.

srand被声明为here作为弱符号.除非重写,否则它将调用__srandom_r here,定义为here.都是随机的.c和random\r.c似乎有足够的文档来说明事物是如何工作的.

C++相关问答推荐

编译SDL 2时缺少SDL_ttf

括号中的堆栈实现错误问题

堆栈在作用域阻塞后会被释放吗?

为什么可以在typedef之前使用typedef d struct 体?

为什么即使在强制转换时,此代码也会溢出?

在C语言中,在数学运算过程中,为什么浮点数在变量中的行为不同

GCC创建应用于移动项的单独位掩码的目的是什么?

如何确保在C程序中将包含uft8字符的字符串正确写入MySQL?

关于";*(++p)->;t";、&++p->;t";和&q;++*p->;t";的问题

编译器如何处理具有更复杂值的枚举?

如何在双向表中实现线程安全,每个条目仅使用4位,同时避免任何全局锁?

GCC错误,共享内存未定义引用?

隐藏测试用例无法在c程序中计算位数.

将某些内容添加到链接列表时,列表中的其他项将使用最后添加的项的名称

将size_t分配给off_t会产生符号转换错误

`%%的sscanf无法按预期工作

如何在Rust中处理C的longjmp情况?

execve 不给出which命令的输出

在C中定义函数指针?

窗口消息处理函数以某种方式更改了应保持不变的 int 变量的值