精华内容
下载资源
问答
  • 关于C++srand((unsigned)time(NULL))的理解 srand((unsigned)time(NULL))是经常和rand()函数搭配在一起,在平时的编程中,可能我们只用rand()函数就能够满足得到随机数的需求,但实际上,计算机产生的是伪随机数,...

    关于C++中srand((unsigned)time(NULL))的理解

    -  srand((unsigned)time(NULL))是经常和rand()函数搭配在一起,在平时的编程中,可能我们只用rand()函数就能够满足得到随机数的需求,但实际上,计算机产生的是伪随机数,伪随机数是计算机中已经编好的无规则排序的数字,它们的排序是没有规律的,并将它们平均分成N份,rand函数只是从这里面的数字中随机抽取一个,所以经过一个周期,获得的随机数是重复的。

    - 函数原型是void srand(unsigned seed),这里的seed是种子,什么是种子呢?种子就是一个编号,srand函数通过这个编号来获取计算机分配好的N组中其中一个组数;而time函数是获取系统时间,返回值是从1971年到现在的经过的秒数,类型为time_t。因为每一时刻的时间不同,所以秒数不同,那么srand()获取的组数就不一样,最后再通过rand()函数从这组数中获取一个随机值,这样就能确保每一次获取的随机数都不重复。而常用的方法就是srand((unsigned)time(NULL)),time函数的形参为空。

    #include <iostream>
    #include <ctime>//time_t time(&t)函数的头文件
    using namespace std;
    int main()
    {
    	srand((unsigned)time(NULL));
    	for(int i=0;i<10;i++)
    	{
    		cout<<rand()<<endl;
    	}
    	return 0;
    }
    
    展开全文
  • C++小笔记——srand(time(null))函数 背景介绍 在C/C++中,rand函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,它是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系数...

    C++小笔记——srand(time(null))函数

    背景介绍

    在C/C++中,rand函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,它是根据一个数(我们可以称它为种子)为基准以某个递推公式推算出来的一系数,但这不是真正的随机数,当计算机正常开机后,这个种子的值便是固定的,除非重新启动系统,否则这个数的值并不会发生改变。因此,为了解决伪随机数的问题,C/C++提供了srand()函数,它的函数原型是 void srand( int a)。可以用来改变这个种子的值。

    进入正题

    srand( (time(NULL) )中time(NULL)函数是得到一个从1900年1月1日到现在的时间秒数,这样每一次运行程序的时间的不同就可以保证产生不同的随机数种子的值,从而得到不同的随机数。

    展开全文
  • 参考博客:srand((unsigned int)time(NULL))引发的思考 一、srand()与rand() srand是随机数发生器的初始化函数。 在c中:两个函数都位于<stdlib.h>头文件中; 在c++中:这两个函数都位于<cstdlib>(被...

    参考博客:srand((unsigned int)time(NULL))引发的思考

    一、srand()rand()

    • srand是随机数发生器的初始化函数。
    • 在c中:两个函数都位于<stdlib.h>头文件中;
    • 在c++中:这两个函数都位于<cstdlib>(被包含与iostream中)
    • 原型:
    void srand (unsighed int seed)
    void rand (void)
    

    seed相当于一个种子,srand函数根据这个种子seed,设置一个随机起点,而rand函数根据这个随机起点,返回一个随机数[seed, RAND_MAX],其中RAND_MAX是0×7ffff,但是是一个伪的随机数(多次编译产生的随机数是一样的,除非给一个变化的种子)

    • 注意:rand函数每一次被调用的时候,都会查看之前是否调用了srand函数。
      • 若调用了,则会调用srand(seed)来初始化它的随机值;
      • 若没有调用,则会默认的调用srand(1)来初始化它的随机值;
      • 因此,即使程序中没有调用srand,也和调用了srand(1)是一样的效果,并且为了让每一次程序的调用都产生不同的值,所以常常使用系统时间来初始化,也就引入了time(NULL)

    程序一:(没有设置种子seed,没有调用srand)

    #include <conio.h>
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int k;
    
    	for (int i = 0; i < 5; i++)
    	{
    		cout << rand()%10 << ",";  // rand()%10:表示将生成的随机数对10取余,即获得了范围0~9的一个随机数
    	}
    	cout << endl;
    	getch();
    	return 0;
    }
    
    运行结果:
    1,7,4,0,9
    
    • getch()
      • 所在头文件:<conio.h>
      • 函数用途:从控制台读取一个字符,但不显示在屏幕上
      • 函数原型:int getch(void)
      • 返回值:读取的字符
      • 例如:
        char ch;或int ch;
        getch();或ch=getch();
        用getch();会等待你按下任意键,再继续执行下面的语句;用ch=getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句。
      • 易错点:所在头文件是conio.h。而不是stdio.h。

    程序二:(种子seed为1时)

    #include <conio.h>
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	int k;
    	srand(1);
    	for (int i = 0; i < 5; i++)
    	{
    		cout << rand()%10 << ",";  // rand()%10:表示将生成的随机数对10取余,即获得了范围0~9的一个随机数
    	}
    	cout << endl;
    	getch();  
    	return 0;
    }
    
    运行结果:
    1,7,4,0,9
    

    程序三:(种子seed为2时)

    运行结果:
    5,6,8,5,4,
    

    上面三个程序中的main函数参数是三个,是main函数的固有本质类型,可以省略不写或者写void
    最后有一个同用的公式:

    • 要取得[a,b)的值可以用:(rand() % (b - a)) + a;(当a为0时,可以用rand()% b;
    • 取得伪随机浮点数:(rand() / double(RAND_MAX))可以取得0-1之间的浮点数,如果想获得更大的随机值可以通过(rand() / double(RAND_MAX) / 10)以此类推

    二、关于time

      time函数可以获取当前的系统时间(但是获取的是秒数,是从1970年1月1日零时零分零秒到目前为止所经过的时间),ctime可以将其转化为常规的时间。
      在c中的头文件为<time.h>,在c++中头文件为<ctime>

    • 原型:
    time_t time (time_t *timer)  // 其中time_t是long int
    char* ctime (const time_t *time)
    

    程序:

    #include <stdio.h>
    #include <conio.h>
    #include <ctime>
    
    int main(void)
    {
    	time_t t;
    
    	t = time(0);  // 这里也可以写time(NULL)
    	printf("秒数为:%ld \n",t);
    
    	printf("Today's date and time: %s",ctime(&t));
    
    	getch();
    	return 0;
    }
    
    运行结果:
    秒数为:1599744675
    Today's date and time: Thu Sep 10 21:31:15 2020
    

    可以看到time(0)得到了一个很大的大整数,是从1970年1月1日零时零分零秒到目前为止所经过的秒数,而ctime函数将这个值,转化为了常规的时间

    三、关于优先级

      我们可以看到这个函数的参数:(unsigned int) time (0)
      从优先级的角度看,这些都是单目运算符,单目运算符的处理顺序是从右往左的,所以上面的处理过程是:对于time函数,给了一个参数为0的值,返回一个当前系统时间的秒数,然后在将其强转为unsigned int类型
      还有如同(*p++):这个也是单目运算符,处理也是从右往左的

    展开全文
  • C语言随机数:rand()和srand(time(NULL))的使用

    万次阅读 多人点赞 2019-01-26 20:17:03
    C语言随机数rand()简介srand()简介使用 rand()简介 使用该函数首先应在开头包含头文件&lt;stdlib.h&gt; #include&lt;stdlib.h&gt; //(C++建议使用#include&lt;cstdlib&gt;) 在标准...

    rand()简介

    1. 使用该函数首先应在开头包含头文件<stdlib.h>

      	#include<stdlib.h>   
      	//(C++建议使用#include<cstdlib>)
      
    2. 在标准的C库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h 中定义的一个整数,它与系统有关。

    3. rand()函数没有输入参数,直接通过表达式rand()来引用;例如可以用下面的语句来打印两个随机数:

      	printf("Random numbers are: %i %i\n",rand(),rand());
      
    4. 因为rand()函数是按指定的顺序来产生整数,因此每次执行上面的语句都打印相同的两个值,所以说C语言的随机并不是真正意义上的随机,有时候也叫伪随机数

    5. 为了使程序在每次执行时都能生成一个新序列的随机值,我们通常通过伪随机数生成器提供一粒新的随机种子。函数 srand()(来自stdlib.h)可以为随机数生成器播散种子。只要种子不同rand()函数就会产生不同的随机数序列。srand()称为随机数生成器的初始化器

    srand()简介

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

    使用

    1. 获得任意一个随机数

      #include <stdlib.h>
      #include <stdio.h>
      #include <time.h>
      
      int main( )
      {
          int i=RAND_MAX;
          int rad = 0;  //随机数
          
      	printf("RAND_MAX=0x%x\n",RAND_MAX);//输出系统随机数最大值
      	printf("time(0)=%d\n", (int)time(0));
      
          srand((int)time(NULL)); 
      
          // 输出 10 个随机数
          for( i = 0;   i < 10;i++ )
          {   
          	rad = rand();  //获得随机数
       		printf( "%6d  ", rad);
      	}
      	printf( "\n");
      
      	return 0;
      }
      

      结果

      RAND_MAX=0x7fffffff
      time(0)=1548502879
      time(0)=1548502879
      234191850  263033491  1753408912  1882350075  370681173  1134876452  907350243  1251304670  206911739  628201936  
      
    2. 获得[a,b]之间的随机整数

      #include <stdlib.h>
      #include <stdio.h>
      #include <time.h>
      
      #define a 100
      #define b 200
      
      int main( )
      {
          int i=RAND_MAX;
          int rad = 0;  //随机数
      	printf("RAND_MAX=0x%x\n",RAND_MAX);
      	printf("time(0)=%d\n", (int)time(0));
      
          srand((int)time(NULL)); 
      
          /* 输出 10 个随机数. */
      	printf( "[a,b): ");
          for( i = 0; i < 10;i++)
          {   
          	rad = rand()%(b-a)+a; //获得随机值
       		printf( "%6d  ", rad);
      	}
      	printf( "\n");
      
          printf( "[a,b]: ");
      	for( i = 0; i < 10;i++ )
          {   
          	rad = rand()%(b-a+1)+a;  //获得随机值
       		printf( "%6d  ", rad);
      	}
      	printf( "\n");
      	return 0;
      	
      }
      

      结果

      RAND_MAX=0x7fffffff
      time(0)=1548504375
      [a,b):    198     143     105     158     113     159     147     151     172     150  
      [a,b]:    125     157     139     102     173     194     147     141     133     180  
      
    3. 获得0~1之间的浮点数

      #include <stdlib.h>
      #include <stdio.h>
      #include <time.h>
      
      int main( )
      {
          int i = RAND_MAX;
          double rad = 0.0;   //随机值
          
      	printf("RAND_MAX=0x%x\n",RAND_MAX);
      	printf("time(0)=%d\n", (int)time(0));
      
      
          srand((int)time(NULL)); 
          /* 输出 10 个随机数.0~1 */
          for( i = 0;   i < 10;i++ )
          {   
          	rad =rand() / (double)(RAND_MAX);  //获得随机值
       		printf( "%6f ", rad);
      	}
      
      	printf( "\n");
      	return 0;
      	
      }
      

      结果

      RAND_MAX=0x7fffffff
      time(0)=1548504780
      0.890306 0.381427 0.652400 0.403826 0.263737 0.818806 0.225321 0.426782 0.348105 0.761069 
      
    展开全文
  • srand((usigned)time(NULL))

    2020-02-01 16:58:34
    srand()   这个函数在C/C++中经常跟rand函数一起使用,srand是随机数发生器的初始化函数.   在C中:这两个函数都位与<stdlib.h>头文件里面   在C++中:两个函数都位与<cstdlib>(被包含于iostream...
  • 分享这个博客链接,讲的真的很好。 主要有以下3方面收获: ...有调用,就是strang(seed),这里的seed就是标题的time(NULL).rand()取随机数公式:要取得[a,b)的值可以用:(rand()%(b-a))+ a;(当a为0时,可以用r
  • 这个值是按照时间而变化的,所以,srand(unsigned(time(NULL)))这个函数的作用,就是一个简单的设定随机数的种子方法。通过这个函数,可以得到每次都不容一样zd的随机数。 time(0)或者time(1)指c++中的一种函数...
  • srand((unsigned int)time(NULL))引发的思考

    千次阅读 2019-08-03 10:00:57
    这几天刷题碰到这句函数srand((unsigned int)time(NULL)) 一看之下,有点印象,但就是说不清楚,挺气人的,就想着弄明白这个东西跟大家分享分享 1,srand跟rand的关系: 2,time函数的简单用法; 3,参数...
  • time() 函数:返回从1970...time(NULL)或time(0)表示在内存中不存储返回的数值。头文件:#include<time.h> rand() 函数:调用一次随机产生0-32767间的整形数。头文件:#include srand() 函数:定义rand()函数中seed的值。
  • 所谓的随机,实际上是伪随机。(真随机应该是每次需要随机数时都实时随机产生) 随机数函数的实质是: 每次调用rand()前,(第一次调用rand())系统...通常的设置方法为:srand((int)time(null)),使用时间戳作...
  • srand()函数是用来重置随机数的种子。参数为一个unsigned inttime()取当前时间。整个语句就是将随机数的种子设为当前时间。经常会在随机数使用前用到,可以保证每次生成的随机数不一样。     1.看tolower声明:...
  • C++中的rand()、srand()

    2016-07-03 23:55:15
    如何产生真正的随机数  1.用rand()可产生0~32767范围内的随机整数  2.如果不设置随机数种子,每次产生的随机数序列都是一样的;... time(NULL)用于得到某个时该距离当前时刻的秒数 6.rand()、srand()函数头文件为s
  • ** srand() ** 功能:初始化随机数发生器 ...可以利用 srand((unsigned int)(time(NULL)) 的方法,产生不同的随机数种子,因为每一次运行程序的时间是不同的。 实例: #include <iostream> #include <stdli
  • int N = rand() % 10; 现在是第一次运行产生随机,往后不管运行几次都不会再变化,如何做到每次运行都产生随机数,此时我们需要添加...srand((unsigned)time(NULL)); int N = rand() % 10; 别忘了头文件time.h ...
  • srand((unsigned int)time(NULL)); for (int i = 0; i < 4; i++) { m_X[i] = s1[i]; } m_Y[0] = 5; } }; Assets Choice[6]; //废弃不用的决策号 int a0_x[4] = { 0,0,0,0 }...
  • C++随机函数(VC program):#include #include #include using namespace std; #define MAX 100int main(int argc, char* argv[]){ srand( (unsigned)time( NULL ) ); //srand()函数产生一个以当前时间
  • 1 srand((unsigned)time(NULL)); //以时间为随机种子,写在循环前才有效(几个循环无所谓) 2 for(i=1;i<=size;i++) 3 { 4 for(j=1;j<=size;j++) 5 { 6 7 if(1...
  • #include<iostream> #include<stdlib.h> #include<time.h> using namespace std;... srand(time(NULL)); //这行代码是为了让 rand() 每一次运行程序都生成不同随机数 int n = rand()%101; /...
  • 1.小人随重力下降的关键语句srand( (time(NULL) ); 在第二个的代码中语句srand( (time(NULL) ) ; 表示设置一个随机种子,每次运行都能保证随机种子不同。 在C语言中,rand()函数可以用来产生随...
  • C语言有生成随机数的函数,需...srand((unsigned)time(NULL)); 之后调用rand即可(生成[0, RAND_MAX]的随机数,RAND_MAX为C库中的常量) rand() 若需生成区间大小为size,区间起始位置为a内的随机数: r...
  • C++指针(1)

    2020-09-14 11:44:02
    函数返回指针 定义 stype * name() 作用:返回数组首地址 所以在主函数中*p;p=r; #include <iostream> #include <ctime>...// 要生成和返回随机数的函数 ... srand( (unsigned)time( NULL
  • C++学习过程笔记(1)

    2017-10-19 20:34:46
    关于语言中的srand(time(NULL)),该函数是在调用rand( )函数时调用的,rand( )是产生随机数的函数,而srand( )是一个设置随机数种子的函数,time(NULL)这个函数的返回值作为srand函数的参数,意思为以现在的系统时间...
  • C++与随机数(二)

    2014-06-03 22:48:08
    转载▼ ...c++随机数生成函数rand(),实质生成伪随机数列。...为生成更加随机的数列,需要srand(unsigned ...常用方式srand((unsigned)time(NULL));//增加头文件 生成[a,b]之间的随机整数的方法: 1、rand()%(b-a+
  • srand((unsigned)time(NULL)); //用系统时间做随机数种子 for(i=0; i; i++) { for(j=0; j; j++) { if(i==0 || j==0 || i==N-1 || j==N-1) maze[i][j] = Wall; //迷宫外墙 else ...
  • C/C++常用函数备份(持续更新)

    千次阅读 2011-11-26 10:46:35
    有些函数在程序中用的比较多, 就记下来。当然个人写的,虽然经过了简单的测试,但难免有问题,慢慢完善!!! // 产生随机字符串 std::string BuildRandString(int... srand((unsigned int)time(NULL) + (s_add++))
  • 第一步:srand(time(NULL)) 根据系统时间设置随机数种子,达到能产生真正随机数的目的 ,在头文件: #include <time.h>第二步:rand() #include <time.h> using namespace std; void main( ) { ...
  • 在C/C++/VC++(.NET)使用随机函数

    千次阅读 2006-02-28 16:18:00
    1.产生一个随机数(从0到32767) srand((unsigned) time(NULL)); //为了提高不重复的概率 rand(); //产生随机数2.产生从m到n的随机数(包括m,不包括n) srand((unsigned) time(NULL)); //为了提高不重复的概率 ...
  • rand() C++ 包含头文件#include<cstdlib> 1.rand()%a:生成0到a的整数,左闭右开区间[0,a),包括0,不包括a. ... srand((unsigned int)time(NULL));//设置种子,为了使每一次的运行结果不一样 for (i
  • 伪随机数 C++中用rand()产生一个随机数,这个函数在头文件stdlib.h或cstdlib中。 rand() 返回一随机数值的范围在 [0, RAND_MAX] 间。RAND_MAX是个宏定义,至少为0x7fff,即...srand((unsigned int)(time(NULL))) .
  • 注意,如果要真正的随机,需要srand(time(NULL))操作,因为random_shuffle用的是随机数发生器,还记得rand()吗,如果不srand随机数种子,得到的随机数是固定的。 #include<bits/stdc++.h> using namespace std...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 174
精华内容 69
关键字:

c++srand(time(null))函数

c++ 订阅