srand和rand两个函数配合可以产生伪随机数序列。rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列。
程序1:
1 #include<stdlib.h>/*用到了srand函数,所以要有这个头文件*/ 2 #include<stdio.h> 3 #define MAX 15 4 5 int main() 6 { 7 int number[MAX] = {0}; 8 int i; 9 unsigned int seed; 10 printf("手动输入随机数种子:\n"); 11 scanf("%d",&seed);/*手动输入种子*/ 12 srand(seed); 13 printf("产生随机数如下:\n"); 14 for(i = 0; i < MAX; i++){ 15 number[i] = rand() % 100;/*产生100以内的随机整数*/ 16 printf("%d\t",number[i]); 17 } 18 printf("\n"); 19 return 0; 20 }
运行结果:
手动输入随机数种子: 3 产生随机数如下: 46 85 68 40 25 40 72 76 1 64 58 24 93 39 2
程序2:
1 #include<stdlib.h> 2 #include<stdio.h> 3 #include<time.h>/*用到了time函数,所以要有这个头文件*/ 4 #define MAX 15 5 6 int main(void) 7 { 8 int number[MAX] = {0}; 9 int i; 10 srand((unsigned)time(NULL));/*播种子*/ 11 printf("产生随机数序列如下:\n"); 12 for(i = 0; i < MAX; i++) 13 { 14 number[i] = rand() % 100;/*产生100以内的随机整数*/ 15 printf("%d\t",number[i]); 16 } 17 printf("\n"); 18 return 0; 19 }
运行结果:
产生随机数序列如下: 20 29 49 13 33 96 37 18 84 20 10 28 60 62 86
时间: 2024-10-13 15:39:44