【发布时间】:2019-09-05 23:00:17
【问题描述】:
我试图使用rand() 生成一些随机数,但我首先检查了 RAND_MAX,因为我想生成一些大数。在 Windows 10 中 printf("%x",RAND_MAX); 提供 0x7fff 而在 linux 18.04 printf("%x",RAND_MAX); 提供 0x7ffffff
为什么当我在同一台机器上使用具有相同库的相同编译器 GCC 时最大范围会发生变化?
有没有一种方法可以让我在 Windows 上配置我的 IDE(代码块)或编译器以获得与在 linux 上相同的大小?
【问题讨论】:
-
rand()在许多平台上几乎是随机的。如果您需要真正的随机库,则需要使用适当的随机数库。 -
你在Windows下使用的是什么compiler和version。
-
RAND_MAX保证至少为 32767。您可以在所有机器上依赖至少 15 位。反复调用rand(),直到累积所需的位数。另请参阅rand(3)man page 和RAND_MAX文档。您可能还对Understanding the algorithm of Visual C++'s rand() function 感兴趣 -
谢谢大家