Dima Kuzmin Asked:2022-04-09 00:52:03 +0800 CST2022-04-09 00:52:03 +0800 CST 2022-04-09 00:52:03 +0800 CST C中的rand如何在区间内取负值? 772 如何理解设计的意义 rand() % 21 + (-10) 值(-10)不清楚,即 这里的间隔值最大为 21,但为什么括号中是 -10 并且 rand 是否适用于该范围内的负数? c 3 个回答 Voted MBo 2022-04-09T00:54:54+08:002022-04-09T00:54:54+08:00 第一部分给出随机数的范围 0..20,减去 10 后得到范围 -10..10 Best Answer Zhihar 2022-04-09T01:05:46+08:002022-04-09T01:05:46+08:00 该函数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:32+08:002022-04-09T00:54:32+08:00 -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
。