srand函数是随机数发生器的初始化函数。原型:voidsrand(unsigned int seed);srand和rand()配合使用产生伪随机数序列。
外文名
srand
含 义属 性
原 型
void srand(unsigned int seed);
用 途
编程
srand简介
编辑
语法:void srand (unsigned seed);
参数说明:unsigned seed:随机数产生器的初始值(种子值)。
功能说明:srand设置产生一系列伪随机数发生器的起始点,要想把发生器重新初始化,可用1作seed值。任何其它的值都把发生器匿成一个随机的起始点。rand检索生成的伪随机数。在任何调用srand之前调用rand与以1作为seed调用srand产生相同的序列。[1]
此函数可以设定rand函数所用的随机数产生演算法的种子值。任何大于一的种子值都会将rand随机数所产生的虚拟随机数序列重新设定一个起始点。[2]
包含文件:stdlib. h
返回值:无
相关函数:rand,random ,randomize
srandrand 和srand
编辑
函数一:int rand(void);
功能:产生随机值,从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。
函数二:void srand(unsigned seed);
参数seed是rand()的种子,用来初始化rand()的起始值。
可以认为rand()在每次被调用的时候,它会查看:
1) 如果用户在此之前调用过srand(seed),给seed指定了一个值,那么它会自动调用srand(seed)一次来初始化它的起始值。
2) 如果用户在此之前没有调用过srand(seed),它会自动调用srand(1)一次。
srand函数用法
编辑
rand函数在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列。
srand使用举例
编辑
srand例1(C语言)
输出了20个大小范围为0-99的随机数#include//头文件包含rand和srand函数
#include
#include
void main()
{
int i,k;
srand((unsigned)time(NULL));//选取种子文件
for(i=0;i<20;i++)
{
k=rand()%100;//%100控制随机数的范围
printf("k=%d\n",k);//输出随机数
}
}
srand例2(C语言)
随机输出十个0-100之间的整数#include/*用到了srand函数,所以要有这个头文件*/
#include
#define MAX 10
int main(void)
{
int number[MAX] = {0};
int i;
unsigned int seed;
scanf("%d",&seed);/*手动输入种子*/
srand(seed);
for(i = 0; i
{
number[i] = (rand() % 100);/*产生100以内的随机整数*/
printf("%d\n",number[i]);
}
printf("\n");
return 0;
}
srand例3(C语言)
#include
#include
#include/*用到了time函数,所以要有这个头文件*/
#define MAX 10
int main(void)
{
int number[MAX] = {0};
int i;
srand((unsigned)time(NULL));/*播种子*/
for(i = 0; i
{
number[i] = (rand() % 100);/*产生100以内的随机整数*/
printf("%d\n",number[i]);
}
printf("\n");
return 0;
}
srand例4(C++)
#include
#include
#include
using namespace std;
double random(double,double);
int main()
{
srand( unsigned( time(0) ) );//srand(time(NULL));
for(int j = 0; j
cout <
return 0;
}
double random(double start,double end)
{
return start + (end - start) * rand() / (RAND_MAX + 1.0);
}
//从此处采取点斜式子,将返回值范围限定至0-9//的整数,倘若要生成10,(RAND_MAX+1.0)改成(RAND_MAX)
/*运行结果
*No.1:3
*No.2:9
*No.3:0
*No.4:9
*No.5:5
*No.6:6
*No.7:9
*No.8:2
*No.9:9
*No.10:6*/
词条图册
更多图册
参考资料
1.
宗丽苹 ,吴倩 ,邦继明.Microsoft C5.0 优化编译 库程序参考手册 下 第7册:中国科学院科海培训中心,2013:351-352
2.
希望图书创作室.PHP4.0程序员参考:北京希望电子出版社,2000:342-343