Dima Kuzmin Asked:2022-04-09 00:52:03 +0000 UTC2022-04-09 00:52:03 +0000 UTC 2022-04-09 00:52:03 +0000 UTC C中的rand如何在区间内取负值? 772 如何理解设计的意义 rand() % 21 + (-10) 值(-10)不清楚,即 这里的间隔值最大为 21,但为什么括号中是 -10 并且 rand 是否适用于该范围内的负数? c 3 个回答 Voted MBo 2022-04-09T00:54:54Z2022-04-09T00:54:54Z 第一部分给出随机数的范围 0..20,减去 10 后得到范围 -10..10 Best Answer Zhihar 2022-04-09T01:05:46Z2022-04-09T01:05:46Z 该函数rand()返回一个从 0 到 2^15 - 1 的值 (32767) rand() % 21 计算接收到的随机数除以 21 后的余数(即从 0 到 20)。 由于余数是循环的,因此实现了从 0 到 20 (含)的随机数的生成 + (-10) 将随机数向左移动 10,即 而不是0..20范围内的随机数,而是-10..10范围内的随机数 附言 如果您想要的不是整数值,而是实数,那么您可以这样做: float value = -10.0f + 20 * float(rand()) / 32767.0 附言 我不太记得该帐户32767,您似乎可以使用常量RND_MAX或类似的东西 user176262 2022-04-09T00:54:32Z2022-04-09T00:54:32Z -10此代码返回从到范围内的随机值10。
第一部分给出随机数的范围 0..20,减去 10 后得到范围 -10..10
该函数
rand()返回一个从 0 到 2^15 - 1 的值 (32767)rand() % 21计算接收到的随机数除以 21 后的余数(即从 0 到 20)。由于余数是循环的,因此实现了从 0 到 20 (含)的随机数的生成
+ (-10)将随机数向左移动 10,即 而不是0..20范围内的随机数,而是-10..10范围内的随机数附言
如果您想要的不是整数值,而是实数,那么您可以这样做:
附言
我不太记得该帐户
32767,您似乎可以使用常量RND_MAX或类似的东西-10此代码返回从到范围内的随机值10。