我试图使用 rand()
生成一些随机数,但我首先检查了 RAND_MAX,因为我想生成一些大数。在 Windows 10 中 printf("%x",RAND_MAX);
给出 0x7fff
而在 linux 18.04 printf("%x",RAND_MAX);
给出 0x7ffffff
为什么当我在同一台机器上使用具有相同库的相同编译器 GCC 时,最大范围会发生变化?
有没有一种方法可以在 Windows 上配置我的 IDE(代码块)或编译器以获得与在 Linux 上相同的大小?
最佳答案
这不是同一个库。 Linux 正在提供 rand
通过公共(public) libc
(通常为 glibc
)被大多数 Linux 程序使用; Windows 提供了不同的“通用”C 运行时,许多编译器和工具捆绑了它们自己的版本。
glibc
is pretty Linux specific ;你总是可以自己写srand
/rand
/RAND_MAX
遵循 Linux 约定的替换库,但你不能只使用 Linux 的未修改的。
如果您想要可移植代码,我建议切换到 C++ 并使用 C++11 <random>
API,具有定义明确、可移植的语义。 rand
是一个糟糕的 PRNG,努力使其可移植并不能解决这个问题。
关于c - 为什么 RAND_MAX 在 linux 和 windows 的同一台机器上不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55698041/