如何生成随机数
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.总结
其实根本没有真正的随机数。因为通过实验发现,产生的第一个随机数总在一个小范围内波动。