用rand() 函数去100 个随机的整数的有关问题

用rand() 函数去100 个随机的整数的问题
int rand100 = (((double) rand() / (double) RAND_MAX) * RANGE_MAX + RANGE_MIN);
 你让  RANGE_MAX=1;RANGE_MIN = 0

问题:
1 rand() 返回的是 什么类型的数?
2 (double) rand() / (double) RAND_MAX),为什么要对rand取整?这样的结果不就是 零 吗?
3 要是 去 100  个 随机 整数,这个程序对吗?

------解决方案--------------------
rand()返回值是int
RANGE_MAX取值应该为100,这样就是一个0-100范围内的随机数
------解决方案--------------------
参考C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\rand.c
/***
*rand.c - random number generator
*
*       Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines rand(), srand() - random number generator
*
*******************************************************************************/

#include <cruntime.h>
#include <mtdll.h>
#include <stddef.h>
#include <stdlib.h>

/***
*void srand(seed) - seed the random number generator
*
*Purpose:
*       Seeds the random number generator with the int given.  Adapted from the
*       BASIC random number generator.
*
*Entry:
*       unsigned seed - seed to seed rand # generator with
*
*Exit:
*       None.
*
*Exceptions:
*
*******************************************************************************/

void __cdecl srand (
        unsigned int seed
        )
{
        _getptd()->_holdrand = (unsigned long)seed;
}


/***
*int rand() - returns a random number
*
*Purpose:
*       returns a pseudo-random number 0 through 32767.
*
*Entry:
*       None.
*
*Exit:
*       Returns a pseudo-random number 0 through 32767.
*
*Exceptions:
*
*******************************************************************************/

int __cdecl rand (
        void
        )
{
        _ptiddata ptd = _getptd();

        return( ((ptd->_holdrand = ptd->_holdrand * 214013L
            + 2531011L) >> 16) & 0x7fff );
}

------解决方案--------------------
1.rand()函数返回什么
rand()
函数式
stdlib.h
里声明的函数。
它生成一个[0, RAND_MAX]的均匀随机整数。
其中,RAND_MAX至少为32767(2^15-1)
returns a pseudo-random number 0 through 32767.


2. (double) rand() / (double) RAND_MAX):
这是把生成的随机数范围缩小到[0,1],double/double得出结果不是0,而是double型数据

3. 要是 去 100 个 随机 整数,这个程序对吗?
不对。
乘以RANGE_MAX是让随机数的范围扩大到
[0, RANGE_MAX
],加上RANGE_MIN是让随机数的范围限制到
[RANGE_MIN, RANGE_MAX]