开发者社区> 问答> 正文

怎样获得在一定范围内的随机数?

怎样获得在一定范围内的随机数?

展开
收起
游客py5kcp7dd6tu6 2022-03-29 21:26:57 483 0
1 条回答
写回答
取消 提交回答
  • 直接的方法是 rand() % N /* 不好 */ 试图返回从 0 到 N - 1 的数字。但这个方法不好, 因为许多随机数 发生器的低位比特并不随机, 参见问题 13.16。 一个较好的方法是: (int)((double)rand() / ((double)RAND_MAX + 1) * N) 如果你不希望使用浮点, 另一个方法是: rand() / (RAND_MAX / N + 1) 两种方法都需要知道 RAND_MAX, 而且假设 N 要远远小于 RAND_MAX。 RAND_MAX 在 ANSI 里 #define 在 <stdlib.h>。 顺便提一下, RAND_MAX 是个常数, 它告诉你 C 库函数 rand() 的固定范围。你不可以设 RAND_MAX 为其它的值, 也没有办法要求 rand() 返回其它范围的值。

    如果你用的随机数发生器返回的是 0 到 1 的浮点值, 要取得范围在 0 到 N - 1 内的整数, 只要将随机数乘以 N 就可以了。

    2022-03-29 21:27:16
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载