gpt4 book ai didi

c - ((float) rand()/(float)((1 << 31) - 1)) 的含义

转载 作者:太空狗 更新时间:2023-10-29 17:16:23 25 4
gpt4 key购买 nike

我试图理解一个 C 程序,其中包含一个 .h 文件,该行

#define random                  ((float) rand() / (float)((1 << 31) - 1))

C 程序还包括<math.h> .

我的猜测是,这只是从区间 [0,1] 上的均匀分布中产生一个随机数;这是正确的吗?

最佳答案

表面上是的。但它在两个主要方面是错误的:

  1. 使用 RAND_MAX反而。这就是它的用途。它可能比 1 << 31 - 1 小得多.

  2. 1 << 31在具有32 位 的平台上会给您未定义的行为 int或更少,这是非常普遍的。不要那样做!

请注意,如果您不想恢复值 1(通常是这种情况),请使用 RAND_MAX + 1.0在分母上。 1.0强制以 float 计算:如果你写 RAND_MAX + 1,你将面临整数类型溢出的风险.

关于c - ((float) rand()/(float)((1 << 31) - 1)) 的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38771436/

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