新闻资讯
看你所看,想你所想

srand

srand

srand

srand函式是随机数发生器的初始化函式。原型:void srand(unsigned int seed);srand和rand()配合使用产生伪随机数序列。

基本介绍

  • 外文名:srand
  • 含义:随机数发生器的初始化函式
  • 属性:函式
  • 原型:void srand(unsigned int seed);
  • 用途:编程
  • 需要头档案:<stdlib.h>

简介

语法:void srand (unsigned seed);
参数说明:unsigned seed:随机数产生器的初始值(种子值)。
功能说明:srand设定产生一系列伪随机数发生器的起始点,要想把发生器重新初始化,可用1作seed值。任何共它的值都把发生器匿成一个随机的起始点。rand检索生成的伪随机数。在任何调用srand之前调用rand与以1作为seed调用srand产生相同的序列。
此函式可以设定rand函式所用的随机数产生演算法的种子值。任何大于一的种子值都会将rand随机数所产生的虚拟随机数序列重新设定一个起始点。
包含档案:stdlib. h
返回值:无
相关函式:rand,random ,randomize

rand 和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)一次。

函式用法

rand函式在产生随机数前,需要系统提供的生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函式生成的伪随机数序列都是一样的。srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函式生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函式提供不同的种子值,进而产生不同的随机数序列。

使用举例

例1(C语言)

输出了20个大小範围为0-99的随机数
#include<stdlib.h>//头档案包含rand和srand函式#include<stdio.h>#include<time.h>void main(){int i,k;srand((unsigned)time(NULL));//选取种子档案for(i=0;i<20;i++) {  k=rand()%100;//%100控制随机数的範围  printf("k=%d\n",k);//输出随机数} 

例2(C语言)

随机输出十个0-100之间的整数
#include<stdlib.h>/*用到了srand函式,所以要有这个头档案*/#include<stdio.h>#define MAX 10int main(void){int number[MAX] = {0};int i;unsigned int seed;scanf("%d",&seed);/*手动输入种子*/srand(seed);for(i = 0; i < MAX; i++){number[i] = (rand() % 100);/*产生100以内的随机整数*/printf("%d\n",number[i]);}printf("\n");return 0;}

例3(C语言)

#include<stdlib.h>#include<stdio.h>#include<time.h>/*用到了time函式,所以要有这个头档案*/#define MAX 10int main(void){int number[MAX] = {0};int i;srand((unsigned)time(NULL));/*播种子*/for(i = 0; i < MAX; i++){number[i] = (rand() % 100);/*产生100以内的随机整数*/printf("%d\n",number[i]);}printf("\n");return 0;}

例4(C++)

#include<iostream>#include<ctime>#include<cstdlib>using namespace std;double random(double,double);int main(){srand( unsigned( time(0) ) );//srand(time(NULL));for(int j = 0; j < 10; j++)cout << "No." << j+1 << ":" << int(random(0,10)) << endl;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*/

转载请注明出处海之美文 » srand

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com