srand((int)time(0));j=1+(int)(10.0*rand()/(RAND_MAX+1.0));

srand((int)time(0));中time(0)的返回值不就是int类型么?为啥还要用((int)time(0))?j=1+(int)(10.0*rand()/(... srand((int)time(0));中time(0)的返回值不就是int类型么?为啥还要用((int)time(0))? j=1+(int)(10.0*rand()/(RAND_MAX+1.0));前面为什么有个数字1?后面又为什么要10.0*rand(),再后面又为什么要RAND_MAX+1.0这个+1.0又是什么意思? 展开
 我来答
aesopwater
2013-10-17 · 超过13用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:22.9万
展开全部

你这里有几个问题

  1. time()函数的返回类型不是int,是time_t,如果要深究time_t的类型的话应该是_int64或者long,所以需要使用(int)来所类型转换。

  2.  j=1+(int)(10.0*rand()/(RAND_MAX+1.0));这是一个随机生成1到10之间的数。

    2.1 前面的1,确定了最小值是1。

    2.2 由于RAND_MAX代表的rand()的最大值,10.0*rand()的范围就是[0,10 * RAND_MAX]。

    2.3 10.0*rand()/(RAND_MAX+1.0)的范围就是[0,10)了,RAND_MAX+1.0就是为了确保结果小于10.

    2.4 (int)(10.0*rand()/(RAND_MAX+1.0))就是对计算出来的结果进行取整,所以结果范围为[0,9]之间的整数。

追问
rand()返回值为   实型吗?

还有就是 如果 (int)(10.0*rand()/(RAND_MAX)) 结果是不是[0,10]了呢?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式