前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础知识 | 每日一练(126)

基础知识 | 每日一练(126)

作者头像
小林C语言
发布2019-09-25 15:16:58
2690
发布2019-09-25 15:16:58
举报

基础知识练习

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

小林:直接的方法是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 就可以了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 C语言入门到精通 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档