srand 订阅
srand函数是随机数发生器的初始化函数。原型:void srand(unsigned int seed);srand和rand()配合使用产生伪随机数序列。 展开全文
srand函数是随机数发生器的初始化函数。原型:void srand(unsigned int seed);srand和rand()配合使用产生伪随机数序列。
信息
属    性
函数
原    型
void srand(unsigned int seed);
外文名
srand
含    义
随机数发生器的初始化函数
用    途
编程
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
收起全文
精华内容
下载资源
问答
  • srand

    千次阅读 2021-05-22 07:47:31
    srand函数是随机数发生器的初始化函数。原型:voidsrand(unsigned int seed);srand和rand()配合使用产生伪随机数序列。外文名srand含义属性原型void srand(unsigned int seed);用途编程srand简介编辑语法:void ...

    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

    展开全文
  • 下面小编就为大家带来一篇有关C++中随机函数rand() 和srand() 的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 标准库(被包含于中)提供两个帮助生成伪随机数的函数:  函数一:int rand(void);...  1) 如果用户在此之前调用过srand(seed),给seed指定了一个值,那么它会自动调用srand(seed)一次来初始化它的
  • VC中随机函数最常用就是srand和rand(实际上是属于标准C函数),其中srand负责设置随机种子,rand则负责生成随机数。使用此二随机函数需要包含头文件
  • 本文主要对C语言中srand和rand的用法进行详解。
  • C语言srand和rand函数

    2021-05-21 15:37:56
    满意答案n263egq33djg推荐于 2017....从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。 函数二:void srand(unsigned seed);参数seed是rand()的种子,用初始化rand()的起始值。 可...

    满意答案

    00e27ab806e4881f8254fe7ae8741834.png

    n263egq33djg

    推荐于 2017.11.29

    标准库(被包含于中)提供两个帮助生成伪随机数的函数: 函数一: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)一次。 根据上面的第一点我们可以得出:

    1) 如果希望rand()在每次程序运行时产生的值都不一样,必须给srand(seed)中的seed一个变值,这个变值必须在每次程序运行时都不一样(比如到目前为止流逝的时间)。

    2) 否则,如果给seed指定的是一个定值,那么每次程序运行时rand()产生的值都会一样,虽然这个值会是[seed, RAND_MAX(0x7fff))之间的一个随机取得的值。

    3) 如果在调用rand()之前没有调用过srand(seed),效果将和调用了srand(1)再调用rand()一样(1也是一个定值)。 举几个例子,假设我们要取得0~6之间的随机整数(不含6本身): 例一,不指定seed:

    for(int i=0;i<10;i++){

    ran_num=rand() % 6;

    cout<

    }

    每次运行都将输出:5 5 4 4 5 4 0 0 4 2 例二,指定seed为定值1:

    srand(1);

    for(int i=0;i<10;i++){

    ran_num=rand() % 6;

    cout<

    }

    每次运行都将输出:5 5 4 4 5 4 0 0 4 2

    跟例子一的结果完全一样。 例三,指定seed为定值6:

    srand(6);

    for(int i=0;i<10;i++){

    ran_num=rand() % 6;

    cout<

    }

    每次运行都将输出:4 1 5 1 4 3 4 4 2 2

    随机值也是在[0,6)之间,随得的值跟srand(1)不同,但是每次运行的结果都相同。 例四,指定seed为当前系统流逝了的时间(单位为秒):time_t time(0):

    #include

    //…

    srand((unsigned)time(0));

    for(int i=0;i<10;i++){

    ran_num=rand() % 6;

    cout<

    }

    第一次运行时输出:0 1 5 4 5 0 2 3 4 2

    第二次:3 2 3 0 3 5 5 2 2 3

    总之,每次运行结果将不一样,因为每次启动程序的时刻都不同(间隔须大于1秒?见下)。 关于time_t time(0): time_t被定义为长整型,它返回从1970年1月1日零时零分零秒到目前为止所经过的时间,单位为秒。比如假设输出:

    cout<

    值约为1169174701,约等于37(年)乘365(天)乘24(小时)乘3600(秒)(月日没算)。 另外,关于ran_num = rand() % 6, 将rand()的返回值与6求模是必须的,这样才能确保目的随机数落在[0,6)之间,否则rand()的返回值本身可能是很巨大的。

    一个通用的公式是:

    要取得[a,b)之间的随机整数,使用(rand() % (b-a))+ a (结果值将含a不含b)。

    在a为0的情况下,简写为rand() % b。 最后,关于伪随机浮点数: 用rand() / double(RAND_MAX)可以取得0~1之间的浮点数(注意,不同于整型时候的公式,是除以,不是求模),举例:

    double ran_numf=0.0;

    srand((unsigned)time(0));

    for(int i=0;i<10;i++){

    ran_numf = rand() / (double)(RAND_MAX);

    cout<

    }

    运行结果为:0.716636,0.457725,…等10个0~1之间的浮点数,每次结果都不同。 如果想取更大范围的随机浮点数,比如1~10,可以将

    rand() /(double)(RAND_MAX) 改为 rand() /(double)(RAND_MAX/10)

    运行结果为:7.19362,6.45775,…等10个1~10之间的浮点数,每次结果都不同。

    至于100,1000的情况,如此类推。 以上不是伪随机浮点数最好的实现方法,不过可以将就着用用…

    00分享举报

    展开全文
  • rand和srand函数的用法

    多人点赞 2021-04-14 16:59:04
    目录前言一、rand函数二、srand2.读入数据总结 前言 之前在敲代码的时候用过rand函数,当时只是知道了rand函数要配合srand函数一起使用,才能达到产生一个随机数的目的,具体原因是什么则一知半解,后来闲着无事,...

    前言

    之前在敲代码的时候用过rand函数,当时只是知道了rand函数要配合srand函数一起使用,才能达到产生一个随机数的目的,具体原因是什么则一知半解,后来闲着无事,查找了一下资料,差不多弄懂了。不过碍于本人水平有限,可能会有些地方理解有误,敬请给读者批评指正,并提出宝贵意见。


    一、rand函数

    rand函数是用来产生一个随机数,返回值为0~RAND_MAX,RAND_MAX不得小于32767,在编译器中可以通过查看定义来查看这个数具体是多少。不过这数字并不是真正的随机,而是一种伪随机数。
    在这里插入图片描述
    在这里插入图片描述
    在cplusplus网站上关于rand函数给出的解释如下:
    rand函数解释
    在这里插入图片描述
    大致意思就是rand函数每次通过一个算法产生一个随机的数字,而这个算法又使用种子来产生随机数。

    至于为什么说rand函数产生的数字是伪随机数,我们用一串代码来解释

    代码1:

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	int random = 0;
    	for (int i = 0; i < 10; i++)
    	{
    		random = rand();			//用rand产生一个随机数
    		printf("%d\n", random);
    	}
    	return 0;
    }
    

    程序运行结果:
    在这里插入图片描述
    似乎的确是产生了10个随机的数字,但是当我们再一次运行程序,甚至我们把程序关闭再次执行相同的程序时,产生的还是这10个数字。很明显这就不是我们想要的随机数了。

    产生这样结果的原因是什么呢?正如前面我们所说,rand函数所产生的数是基于一个依赖于种子的算法来实现的,而这个种子在你每次启动电脑时就确定了。因此每次rand产生的数字也当然是一样的。

    至于rand函数所使用的算法是什么,在Dennis M.Ritchie(C语言之父)所著的《C程序设计语言》一书中给出了一种算法:

    rand函数实现:

    unsigned long int next = 1;
    int rand(void)
    {
    	next = next * 1103515245 + 12345;
    	return (unsigned int)(next / 65536) % 32768;
    }
    

    next 就是我们前面所说的种子,由此大家应该知道为什么我们运行上面的代码时,产生的10个数字每次都是一样的。

    二、srand函数

    在前言中我们提到,rand要配合srand来使用,那么srand又是什么呢?
    同样的在cplusplus中我们可以查到srand函数的解释:在这里插入图片描述srand就是用来初始化我们前面所说的种子,这样程序在每次运行时都会有不同的种子值,从而rand函数就会生成一个真正的随机数。
    在Dennis M.Ritchie的《C程序设计语言》中给出了srand函数的一种算法:

    srand函数实现

    unsigned long int next = 1;
    
    void srand(unsigned int seed)
    {
        next = seed;
    }
    

    很明显,srand可以初始化我们的种子,但是要怎么进行初始化呢,我们先自己输入一个参数,手动对srand进行初始化。

    代码2:

    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    	int random = 0;
    	int n = 0;
    	scanf("%d", &n);
    	srand(n);     //用srand初始化种子
    	for (int i = 0; i < 10; i++)
    	{
    		random = rand();			//用rand产生一个随机数
    		printf("%d\n", random);
    	}
    	return 0;
    }
    

    在这里插入图片描述

    当我们输入 2,3,4…时结果如下:
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    当我们输入不同的n时,rand函数都给出了不同的值,但是当我们输入两组相同的n时,rand的结果都是一样的。也就是说,我们手动地让srand初始化种子,所以此时的随机数可以说成是在认为控制下的随机数,因此它也不是真正意义上的随机数。为了解决这一问题,我们引入time()函数。

    三、time函数

    同样的,我们先看cplusplus中给出的解释:
    在这里插入图片描述
    time函数会获取电脑的当前日历时间,并返回从这一时间到1970年1月1日00:00的秒数。
    在这里插入图片描述
    在这里插入图片描述
    我大概地算了一下,从1970年1月1日00:00到运行程序时的时间,就是程序所运行的结果。

    因此我们可以将time函数的返回值作为srand的参数来初始化种子。
    代码如下:

    代码3:

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
    	int random = 0;
    	srand((unsigned int )time(NULL));     //用srand初始化种子
    	for (int i = 0; i < 10; i++)
    	{
    		random = rand();		//用rand产生一个随机数
    		printf("%d\n", random);
    	}
    	return 0;
    }
    

    运行结果:
    在这里插入图片描述
    再次运行程序的话,产生的两组数字基本上不会一样。

    rand和srand用法注意点

    在代码3中,如果我们将srand()放入 for循环中,运行的结果会是什么呢?

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
    	int random = 0;
    	//srand((unsigned int )time(NULL));     //用srand初始化种子
    	for (int i = 0; i < 10; i++)
    	{
    		srand((unsigned int )time(NULL));     //用srand初始化种子
    		random = rand();		//用rand产生一个随机数
    		printf("%d\n", random);
    	}
    	return 0;
    }
    

    在这里插入图片描述
    产生了10个一样的数字,如果再次运行一下程序就会生成另一组10个完全相同的数字
    在这里插入图片描述
    这是因为每次循环中,虽然我们都会重置种子,但不要忘了,种子是由srand函数调用time函数生成,而time函数生成的数是当前时间距离1970年1月1日凌晨的秒数,单位是秒,而对于我们这样一个小的程序来说,电脑根本用不了1秒的时间,因此每次设置的种子其实都是一样的。而当我们再次运行程序时(我相信你的手速肯定达不到1秒之内完成这一系列操作)已经间隔了几秒钟的时间,种子已经不一样了,所以两次运行之间产生了不同的数字。

    因此当我们想要随机产生一组数字时,要将srand放在循环体外,每次运行程序时,只重置一次种子。

    四、产生特定范围内的随机数

    当我们使用了time函数后,rand函数便会随机产生一个0~RAND_MAX之间的数,但是在大多数情况下,我们只需要某一个区间内的随机数就可以了,那么如何做到呢?
    例如我们想要得到[a,b]区间内的随机数,我们只需要将rand生成的数模上(b-a+1)再加上a即可,即:
    random = rand()%(b-a+1)+a。
    因为对于任意两个正整数x,n,x%n所得到的结果一定位于区间[0,n-1],
    因此random%(b - a+1)∈[0,b-a],random%(b - a+1)+ a∈[a,b]

    代码5:

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
    	int random = 0;
    	srand((unsigned int )time(NULL));     //用srand初始化种子
    	for (int i = 0; i < 10; i++)
    	{
    		a = rand()%51+50;		//用rand产生一个[50,100]的数字 rand()%(100-50+1)+50∈[50,100]
    		printf("%d\n", a);
    	}
    	return 0;
    }
    

    五、疑问

    对于代码3,当我们多次运行后,可以发现,产生的第一个数字总是在慢慢的增加,并且每两次运行之间的差值都很小
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    其他的数字之间也有一种变化规律,这似乎又不满足我们想要的结果。我的理解是,我们每两次执行程序之间,间隔的时间只有几秒钟的时间,因此time函数的返回值很接近,即种子的值其实也很接近,所以最后得到的随机数也很接近。

    unsigned long int next = 1;
    int rand(void)
    {
    	next = next * 1103515245 + 12345;
    	return (unsigned int)(next / 65536) % 32768;
    }
    

    以Dennis M.Ritchie所给的代码为例,逐渐增加则是因为,第二次运行时,种子的值肯定比第一次运行的值大,因此(next / 65536) % 32768的值,第二次通常会比第一次大(当然这也不是绝对的),当结果逐渐增大到超过32768后,又会变成一个接近0的正整数,然后再次逐渐增大。

    猜想:在同一台电脑上,同一款IDE的不同版本(例如VS2019和VS2010)下同时运行代码3,最后产生的随机数是一样的。

    后记

    碍于本人水平有限,最后的疑问,也是我不太明白的地方。如果有读者能够理解的,也希望能帮忙解释一下。如果文中有错误和不妥之处,还请各位读者批评指正,谢谢。

    展开全文
  • C++ - std::srand

    2020-02-21 16:09:51
    C++ - std::srand Defined in header <cstdlib> - 定义于头文件 <cstdlib> 1. std::srand void srand (unsigned int seed); Initialize random number generator - 初始化伪随机数生成器 (函数) The ...

    C++ - std::srand

    Defined in header <cstdlib> - 定义于头文件 <cstdlib>

    1. std::srand

    void srand (unsigned int seed);

    Initialize random number generator - 初始化伪随机数生成器 (函数)

    The pseudo-random number generator is initialized using the argument passed as seed.
    伪随机数生成器使用 seed 传递的参数进行初始化。

    For every different seed value used in a call to srand, the pseudo-random number generator can be expected to generate a different succession of results in the subsequent calls to rand.
    对于调用 srand 时使用的每个 seed 值,可以期望伪随机数生成器在随后的 rand 调用中生成不同的结果序列。

    Two different initializations with the same seed will generate the same succession of results in subsequent calls to rand.
    具有相同 seed 的两个不同的初始化将在随后对 rand 的调用中生成相同的结果序列。

    If seed is set to 1, the generator is reinitialized to its initial value and produces the same values as before any call to rand orsrand.
    如果将 seed 设置为 1,则将生成器重新初始化为其初始值,并产生与调用 rand orsrand 之前相同的值。

    In order to generate random-like numbers, srand is usually initialized to some distinctive runtime value, like the value returned by function time (declared in header <ctime>). This is distinctive enough for most trivial randomization needs.
    为了生成类似随机的数字,通常将 srand 初始化为一些独特的运行时值,例如由 time 函数返回的值 (在头文件 <ctime> 中声明)。对于大多数琐碎的随机化需求而言,这足够独特。

    Seeds the pseudo-random number generator used by std::rand() with the value seed.
    以值 seed 播种 std::rand() 所用的伪随机数生成器。

    If rand() is used before any calls to srand(), rand() behaves as if it was seeded with srand(1).
    若在任何 srand() 的调用前使用 rand(),则 rand() 表现为如同它被以 srand(1) 播种。

    Each time rand() is seeded with the same seed, it must produce the same sequence of values.
    每次以同一 seed 播种 rand() 时,它必须产生相同的值数列。

    srand() is not guaranteed to be thread-safe.
    srand() 不保证为线程安全。

    dereference [ˌdiːˈrefrəns]:v. 间接引用,间接访问,解引用
    reallocate [ˌriːˈæləkeɪt]:v. 重新分配,再指派
    

    Generally speaking, the pseudo-random number generator should only be seeded once, before any calls to rand(), at the start of the program. It should not be repeatedly seeded, or reseeded every time you wish to generate a new batch of pseudo-random numbers.
    通常来说,应该只播种一次伪随机数生成器,在程序开始处,任何到 rand() 的调用前。不应重复播种,或每次希望生成新一批伪随机数时重新播种。

    Standard practice is to use the result of a call to time(0) as the seed. However, time() returns a time_t value, and time_t is not guaranteed to be an integral type. In practice, though, every major implementation defines time_t to be an integral type, and this is also what POSIX requires.
    标准实践是使用以 time(0) 为种子调用的结果。然而 time() 返回 time_t 值,而不保证 time_t 是整数类型。尽管实践中,主流实现都定义 time_t 为整数类型,且此亦为 POSIX 所要求。

    2. Parameters

    seed
    An integer value to be used as seed by the pseudo-random number generator algorithm.
    伪随机数生成器算法将用作种子的整数值。

    the seed value (种子值)

    3. Return value

    none - 无

    4. Examples

    srand(time(NULL));
    

    使用当前时间进行伪随机数发生器的初始化。
    time(NULL) 函数的返回值是作为 srand() 函数的参数。srand(time(NULL)); 以现在的系统时间作为随机数的种子来产生随机数,设置成 NULL 获得系统的当前时间,单位为秒。

    4.1 std::srand

    //============================================================================
    // Name        : std::srand
    // Author      : Yongqiang Cheng
    // Version     : Version 1.0.0
    // Copyright   : Copyright (c) 2019 Yongqiang Cheng
    // Description : Hello World in C++, Ansi-style
    //============================================================================
    
    #include <stdio.h>      /* printf, NULL */
    #include <stdlib.h>     /* srand, rand */
    #include <time.h>       /* time */
    
    int main()
    {
    	printf("First number: %d\n", rand() % 100);
    	srand(time(NULL));
    	printf("Random number: %d\n", rand() % 100);
    	srand(1);
    	printf("Again the first number: %d\n", rand() % 100);
    
    	return 0;
    }
    
    

    Possible output:

    First number: 83
    Random number: 13
    Again the first number: 83
    
    

    4.2 std::srand

    //============================================================================
    // Name        : std::srand
    // Author      : Yongqiang Cheng
    // Version     : Version 1.0.0
    // Copyright   : Copyright (c) 2019 Yongqiang Cheng
    // Description : Hello World in C++, Ansi-style
    //============================================================================
    
    #include <cstdlib>
    #include <iostream>
    #include <ctime>
    
    int main()
    {
    	std::srand(std::time(0)); // use current time as seed for random generator
    	int random_variable = std::rand();
    	std::cout << "Random value on [0 " << RAND_MAX << "]: " << random_variable << '\n';
    
    	return 0;
    }
    
    

    Possible output:

    Random value on [0 2147483647]: 631634451
    
    

    5. Data races - 数据竞争

    The function accesses and modifies internal state objects, which may cause data races with concurrent calls to rand or srand.
    该函数访问和修改内部状态对象,这可能导致并发调用 rand or srand 的数据竞争。

    Some libraries provide an alternative function of rand that explicitly avoids this kind of data race: rand_r (non-portable).
    一些库提供了 rand 的替代功能,它明确避免了这种数据竞争:rand_r (不可移植)。

    C++ library implementations are allowed to guarantee no data races for calling this function.
    允许 C++ 库实现来保证调用此函数不会发生数据竞争。

    6. Exception safety - 异常安全性

    No-throw guarantee: this function never throws exceptions.
    无抛出保证:此函数从不抛出异常。

    assignment [ə'saɪnmənt]:n. 任务,布置,赋值
    

    References

    http://www.cplusplus.com/reference/cstdlib/srand/
    https://en.cppreference.com/w/cpp/numeric/random/srand

    展开全文
  • rand与srand函数的使用

    2021-05-13 21:00:50
    定义函数 :int rand(void)函数说明 :因为rand的内部...在调用此函数产生随机数前,必须先利用srand()设好随机数种子,如果未设随机数种子,rand()在调用时会自动设随机数种子为1。rand()产生的是假随机数字,每次...
  • 在C语言里面,两个函数包含在头文件里面,c++里面,标准库(被包含于中).srand函数是随机数发生器的初始化函数。原型:void srand(unsigned seed);rand函数用来产生随机数,当然是伪随机数。原型:int rand(void)seed...
  • 这是 srand 函数在调用时期望接收的数据类型,因此使用 unsigned 变量类型可以保证不会将负数发送给 srand。从程序的输出可以看出,每次程序使用不同的种子运行时,都会生成不同的随机数字流。然而,如果再次使用 19...
  • srand是初始化种子。你这个问题我们不得不谈到rand函数的实现。我们来看看概念性的代码staticunsignedlongnext=1;/*如果你不srand,那种子就默认为1*/intrand(void){next=next*1103515245+12345;return((unsigned)...
  • C - srand

    千次阅读 2020-02-22 12:56:14
    C - srand https://yongqiang.blog.csdn.net/article/details/104429546 Defined in header <stdlib.h> - 定义于头文件 <stdlib.h> 1. srand void srand (unsigned int seed); Initialize random number...
  • Srand函数

    千次阅读 多人点赞 2020-03-10 17:51:49
    Srand函数是随机数发生器的初始化函数。     原型:void srand(unsigned seed);     用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand...
  • srand和rand函数使用

    2021-04-20 13:40:23
    功能:产生随机值,从srand (seed)中指定的seed开始,返回一个[seed, RAND_MAX(0x7fff))间的随机整数。 函数二:void srand(unsigned seed); 参数seed是rand()的种子,用来初始化rand()的起始值。 可以认为rand()...
  • 在设计问题或算法时,很多时候我们需要生成随机数。... rand()函数用于生成随机数。...要解决此问题,可以使用PHP的另一个内置函数srand()。PHP中的srand()函数用于为随机数生成器rand()设置种子。 sran...
  • In this article, we will be focusing on the generation of random numbers using C++ rand() and srand() function. 嘿伙计! 在本文中,我们将重点介绍使用C ++ rand()和srand()函数生成随机数。 什么是...
  • 往下看: (2)srand()函数: 原型: void srand(unsigned seed) 功能: 产生随机数的起始发生数据,和rand函数配合使用 头文件: stdlib.h time.h 例: #include #include #include int main(void) { int i; time_t t; ...
  • rand函数和srand函数详解

    千次阅读 多人点赞 2021-05-01 19:35:14
    引言 在C语言中,rand函数可以用来产生随机数,但并不是真正意义上的随机数。...为了初始化的值不同,C语言提供了srand函数。 srand函数原型 void srand(unsigned seed); rand函数代码示例 调用ran
  • srand() 初始化随机数发生器srand()的头文件和rand()一样。srand()用来设置rand()产生随机数时的随机数种子。如果没有设置,默认种子就是1,则每次产生的随机数都是一样的。 #include /* printf, NULL */ #include ...
  • rand描述 C 库函数int rand(void)返回一个范围在 0 到RAND_MAX之间的伪随机数。...C 库函数void srand(unsigned int seed)播种由函数rand使用的随机数发生器。 srand声明 下面是 srand() 函数的声明。 void s...
  • srand()函数:随机数发生器的初始化函数,需要提供一个种子,这个种子会对应一个随机数。如果使用相同的种子,rand() 函数会出现一样的随机数。默认种子数是1,即srand(1)。 srand() <stdlib.h>原型:void ...
  • 1、rand()、srand()函数介绍srand 初始化随机种子,rand 产生随机数定义函数:int rand(void)函数功能:产生随机数函数说明:rand的内部实现是用线性同余法做的,不是真的随机数,因为其周期特别长,一定的范围里可...
  • c++中rand(),srand()使用

    千次阅读 2020-12-03 13:06:19
    函数名: rand 函数原型: void rand(void); 属于<stdio.h> 头文件 作用: rand(void)用于产生一个伪随机0~RAND_MAX ...srand(seed)用于给rand()函数设定种子,参数seed是rand()的种子,用来初始化rand()的起...
  • 关于猜数字,简单介绍一下两个函数rand和strand以及时间戳的用法。 一、猜数字游戏的规则 1.先在系统生成一个[1, ...1.3 main函数调用rand和srand函数,并由目录选择决定游戏走向 三、rand和srand函数 猜数字需要引入随
  • ============================================================博文原创,转载请声明出处电子咖啡(原id蓝岩)============================================================srand(time(0)) 有什么作用?#include #...
  • C++srand和time的使用

    2019-11-13 23:28:24
    这是 srand 函数在调用时期望接收的数据类型,因此使用 unsigned 变量类型可以保证不会将负数发送给 srand。从程序的输出可以看出,每次程序使用不同的种子运行时,都会生成不同的随机数字流。然而,如果再次使用 19...
  • 19-srand()的位置问题

    2021-05-19 22:12:28
    如果把srand()放到循环的里面 代码: int main() { //srand(time(NULL)); for(int i=0;i<10;i++) { srand(time(NULL));//error printf("%d\n",rand()); } return 0; } 输出的结果为: 放到循环的外面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 94,732
精华内容 37,892
关键字:

srand

友情链接: 单片机工程.zip