gpt4 book ai didi

c - 为什么 RAND_MAX 在 linux 和 windows 的同一台机器上不同?

转载 作者:太空宇宙 更新时间:2023-11-04 07:48:00 24 4
gpt4 key购买 nike

我试图使用 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/

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