怎样获得在一定范围内的随机数?
1个回答
2015-08-25 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
直接的方法是
rand() % N /* 不好 */
试图返回从 0 到 N ? 1 的数字。但这个方法不好, 因为许多随机数发生器的低位比特并不随机。一个较好的方法是:
(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 就可以了。
rand() % N /* 不好 */
试图返回从 0 到 N ? 1 的数字。但这个方法不好, 因为许多随机数发生器的低位比特并不随机。一个较好的方法是:
(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 就可以了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询