精华内容
下载资源
问答
  • 测试程序时看到srand(time(NULL))产生的随机数的结果是一样的,便在想为什么,程序测试结果如下: #include<stdio.h> #include<stdlib.h> //提供srand() rand() #include<math.h> //提供round() ...

    测试程序时看到srand(time(NULL))产生的随机数的结果是一样的,便在想为什么,程序测试结果如下:

    #include<stdio.h>
    #include<stdlib.h> //提供srand() rand()
    #include<math.h>   //提供round() pow()
    #include<time.h>   //提供time(NULL)
    void round2();     //除法:四舍五入保留整数位
    void round3();     //除法:c语言中round函数的用法  round函数只有一个参数 有两个参数的不是c语言
    int main()
    {
        round2();
    
        round3();
    
        return 0;
    }
    void round2()
    {
        int a,b;
        int c;
    
        srand(time(NULL));
    
        a=rand()%100-50;
        b=rand()%100+1;
    
        if(a>=0)
        {
            c=(a+b/2)/b;
        }
        else
        {
            c=(a-b/2)/ b;
        }
    
        printf("\n%d/%d=%d\n",a,b,c);
    }
    
    void round3()
    {
        int a,b;
        double c;
    
        srand(time(NULL));
    
        a=rand()%100-50;
        b=rand()%100+1;
    
        c=round((double)a/b);
    
        printf("\n%d/%d=%.0lf\n",a,b,c);
    }
    
    
    测试结果:
     -26/99=0
     -26/99=-0
     Process returned 0 (0x0)   execution time : 0.358 s
     Press any key to continue.
    

    srand(time(NULL))的办法产生随机数,但是time(NULL)产生的时间是以秒为单位,如果程序循环在一秒钟之内执行完,那么time(NULL)每次返回的时间也就是一样的,所以造成srand(time(NULL))每次取的种子也都一样。

    大家可以看到这个测试程序的时间是0.358s!!!

    所以这个程序中srand(time(NULL))产生的随机数是一样的。

    展开全文
  • 观察这段代码,本身是一个产生随机数打印的代码,num 每次都会由于系统时间的变化,而形成不同的数。 #include <... srand(time(NULL)); while(1){ count++; num = rand(); printf("%d ", num)

    观察这段代码,本身是一个产生随机数打印的代码,num 每次都会由于系统时间的变化,而形成不同的数。

    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    
    int main(){
    
      int num;
      int count = 0;
      srand(time(NULL));
    
      while(1){
        count++;
        num = rand();
        printf("%d ", num);
        if(count>10){
          break;
        }
      }
      return 0;
    }

    但是如果把 srand(time(NULL)); 这段代码放入 while 中会发生什么?

    int num;
    int count = 0;
    while(1){
      srand(time(NULL));  // 注意,这段代码放进去了
      count++;
      num = rand();
      printf("%d ", num);
      if(count>10){
        break;
      }
    }

    结果就是,num 不再是随机值,而是固定的数值,原因可以参考 https://www.imooc.com/wenda/detail/604944,大体意思是伪随机数的产生依赖种子,种子的时间间隔至少1s才可以生成不同的随机数,放在一个循环中时,由于两行代码之间运行时间间隔不大,导致种子未发生变化,所以没有改变随机数。

    但是!!

    int num;
    int count = 0;
    srand(time(NULL)); 
    while(1){
      count++;
      num = rand();
      printf("time: %ld\n", time(NULL));   // 注意,这段代码放进去了
      printf("%d ", num);
      if(count>10){
        break;
      }
    }

    每次我打印出来的时间,显示出来还是相同的,为什么?明明随机数不同

    把 srand() 放入 while 循环中,时间也是不会变化的,只不过这时随机数也不变了

    目前还没有找到好的回答 ==================》 为什么 srand() 放在循环体外面,打印的时间是不变的,但是随机数是变化的,难道是随机数变化,但是我查看不到吗??

    展开全文
  • 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(time(NULL))的办法产生随机数,但是time(NULL)产生的时间是以秒为单位,如果程序循环在一秒钟之内执行完,那么time(NULL)每次返回的时间也就是一样的,所以造成srand(time(NULL))...

    在网上找了很久,发现都在用srand(time(NULL))的办法产生随机数,但是time(NULL)产生的时间是以秒为单位,如果程序循环在一秒钟之内执行完,那么time(NULL)每次返回的时间也就是一样的,所以造成srand(time(NULL))每次取的种子也都一样,我想请教大家有没有另外的取种子的办法,保证每次都不一样,或者把时间再精确几个数量级??


    比如下面这个小程序,产生的随机数都是一样的

    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    using namespace std;
    
    int main()
    {
            for(int i=0; i<10; ++i)
            {
                    srand(time(NULL));
                    cout<<rand()<<endl;
            }
            return 0;
    }

    更正后:

    #include <iostream> 
    #include <ctime> 
    #include <cstdlib> 
    using namespace std; 
     
    int main() 
    { 
            for(int i=0; i <10; ++i) 
            { 
               static int first=true;
               if(first)
                    {
                     srand(time(NULL));
                     first=false;
                    }
                else 
                    cout < <rand() < <endl; 
            } 
            return 0; 
    } 

    如果想在一个程序中生成随机数序列,需要至多在生成随机数之前设置一次随机种子。 

     

    From: 每次用srand(time(NULL))取的随机数种子都一样,有无另外取种子的办法?

    展开全文
  • linux C语言获取随机数rand()和srand(time(NULL))介绍 一、在使用rand()产生随机数时,产生的是0~RAND_MAX(该值与平台有关,至少为32767,我下面测试的平台是0x7fffffff),之间的随机数,但其产生的随机数...
  • 随机数rand()必须结合srand(time(NULL)) (2012-03-15 09:48:51) 转载▼ 标签: 随机数rand() srand() time(null) it 分类:c/cpp C++ 随机数生成 随机数、随机数种子 在计算机中并...
  • 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;) 在标准...
  • 我的上一篇博客提出了“c语言—srand(time(NULL))产生的随机数一样”的问题,并且分析了产生这样的问题的原因,现在给大家讲解这种问题的处理方法,先直接上代码给大家看效果。 #include<stdio.h> #include<...
  • 参考博客:srand((unsigned int)time(NULL))引发的思考 一、srand()与rand() srand是随机数发生器的初始化函数。 在c中:两个函数都位于<stdlib.h>头文件中; 在c++中:这两个函数都位于<cstdlib>(被...
  • srand(time(NULL))是什么意思?

    千次阅读 2016-06-24 08:55:16
    第一,srand(time(NULL)); //是以当前时间为种子,产生随意数。其中,time(NULL)用来获取当前时间,本质上得到的是一个大整数,然后用这个数来随机数。 第二,这个错误应该是代码中写楼了什么东西造成的,最大的...
  • srand( time(NULL) )

    2013-02-28 14:26:38
    函数原型: time_t time(time_t *timer) 函数功能: 得到机器的日历时间或者设置日历时间 函数返回: 机器日历时间 参数说明: timer=NULL时得到机器日历时间,timer=时间数值时,用于设置日历时间,time_t是一...
  • c语言中语句srand( (time(NULL) ) ; 表示设置一个随机种子,每次运行都能保证随机种子不同。在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,它是根据一个数,我们可以称它...
  • srand(time(NULL)); 指令意思

    千次阅读 2019-07-20 14:40:14
     原型:void srand(unsigned seed);  用法:它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。如: srand(1); 直接使用1来初始化种子。不过为了防止随机数...
  • c语言中语句srand( (time(NULL) ) ; 表示设置一个随机种子,每次运行都能保证随机种子不同。在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,它是根据一个数,我们可以称它...
  • 在c++中,使用c++ rand()获取随机数必须结合srand(time(NULL)),rand()是依靠初始化值产生随机数,而srand(time(NULL))初始化初始值,使每次产生的随机数不一样。在不使用srand(time(NULL)),通过测试遍历一万遍对于...
  • 如果没有srand((unsigned)time(NULL));运行以下程序,每次输出结果会都是一样的。。。。。 void test_rand(void) { unsigned long n; srand((unsigned)time(NULL)); for(int i = 0; i < ...
  • 猜数字游戏 ...srand(time(NULL)); int num = rand(); num即是获取的随机数 #include <stdio.h> #include <stdlib.h> #include<time.h> int main(void) { int rst,g; int g...
  • 这是两个函数! srand函数 一个是srand函数!这是在调用rand()这...而time(NULL)这个函数的返回值是作为srand函数的参数的!意思是以现在的系统时间作为随机数的种子来产生随机数!至于NULL这个参数,很简单因为...
  • time()函数有这个规定 如果你传进去的是一个null指针,那么系统返回当前时间,(否者不是NULL)那么系统认为你要修改当前时间,就把你传进去的指针对应的time_t变量的值设置为当前时间,还有不懂得请补充
  • setTime(hr,min,sec,day,mnth,yr); // alternative to above, yr is 2 or 4 digit yr // (2010 or 10 sets year to 2010) adjustTime(adjustment); // adjust system time by adding the adjustment value ...
  • c语言srand( (time(NULL) )

    2020-06-21 10:58:27
    c语言中语句srand( (time(NULL) ) ; 表示设置一个随机种子,每次运行都能保证随机种子不同。 在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,它是根据一个数,我们可以称...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,735
精华内容 1,094
关键字:

srand(time(null))