关于随机函数

time

  • c语言调用time()函数括号里面为什么要有个NULL?

    • time_t time(time_t *timer)
    • 你先自己定义一个time_t变量,然后把变量的地址传给它。函数会返回自1970年1月1日0点走过的秒数,同时把这个返回值保存在你传进来的那个time_t *指向的变量里面,如果你传进来NULL的话就不保存。
    • time_t类型指针本质上是指针变量也可以指向NULL。time()函数有个规定,如果你传进来的是一个NULL指针,那么系统返回当前时间,如果不是,那么系统认为你要修改当前时间,就把你传进去的指针对应的time_t变量的值设置为当前时间。
  • 一段程序

    • #include<time.h>
      static unsigned long int next = 1;
      int rand(void)
      {
          next = next * 1103515245 + 12345;
          return (unsigned int)(next / 65536) % 32768;
      }
      void srand(unsigned int seed)
      {
          next = seed;
      }
      
    • 在这个样例中,“种子”为静态内部变量next,初始值为1。如果我们不使用srand来更新next,很显然我们每次调用程序生成的伪随机数都是一样的(next从1开始)。如果我们在程序中用srand来更新next,那么我们每次运行程序,就给next初始化以不同的值,于是就能够得到不一样的伪随机数序列。

猜你喜欢

转载自blog.csdn.net/lalala323/article/details/89299275
今日推荐