为什么RAND_MAX在linux中与linux相同的机器上有所不同?

问题描述 投票:0回答:1

我试图使用rand()生成一些随机数,但我先检查了RAND_MAX,因为我想制作一些大数字。在Windows 10中printf("%x",RAND_MAX);在linux 18.04上给0x7fff printf("%x",RAND_MAX);0x7ffffff为什么最大范围改变而我在同一台机器上使用相同的编译器GCC和相同的库?有没有办法在Windows上配置我的IDE(代码块)或编译器以获得与在Linux上相同的大小?

c linux gcc random std
1个回答
2
投票

它不是相同的库。 Linux通过大多数Linux程序使用的常见rand(通常是libc)提供glibc; Windows提供了不同的“通用”C运行时,许多编译器和工具捆绑了自己的版本。

glibc is pretty Linux specific;您可以随时编写自己的srand / rand / RAND_MAX替换库,遵循Linux约定,但您不能只使用未经修改的Linux。

如果你想要可移植的代码,我建议切换到C ++并使用C ++ 11 <random> API,它具有明确定义的可移植语义。 rand是一个可怕的PRNG,并努力使其便携无助于解决可怕的问题。

© www.soinside.com 2019 - 2024. All rights reserved.