如何生成随机数

1.rand()每次的随机都一样,范围是0到RAND_MAX;RAND_MAX是宏定义,在stdlib.h中定义,大小是32767

#include <stdio.h>
#include <stdlib.h> //rand()的头文件,产生随机数的范围是  0到RAND_MAX 

int main()
{
    int i;
    for (i=0; i<10; i++)
    { 
        printf("%d ", rand());
    }
    printf("\nRAND_MAX = %d",RAND_MAX);//RAND_MAX在头文件stdlib.h里定义的
    return 0;
}

 输出的结果(即产生的随机数)每次都一样:

 

2.rand()和srand()配合使用,每次产生的随机数不一样,范围仍是0到RAND_MAX

 stdlib.h头文件中有宏#define RAND_MAX 0x7fff=32768, rand()产生的最大数是32767最小是0

#include <stdio.h>
#include <stdlib.h> 
#include <time.h>  //time()的头文件

int main()
{
    int i;
    srand((int)time(0));//避免每次都产生一样的随机数
    for (i=0; i<10; i++)
    { 
        printf("%d ", rand());
    }
    return 0;
}

#include <stdio.h>
#include <stdlib.h> 
#include <time.h>  //time()的头文件

int main()
{
    int i;

    time_t t;
    time(&t);
    srand((unsigned)time(&t));//用时间作为种子,避免每次产生的都是一样的随机数

    for (i=0; i<10; i++)
    { 
        printf("%d ", rand());
    }
    return 0;
}

 

3.总结

其实根本没有真正的随机数。因为通过实验发现,产生的第一个随机数总在一个小范围内波动。

posted @ 2013-05-20 15:40  独墅一枝花  阅读(265)  评论(0编辑  收藏  举报