C中的随机数函数

      这篇笔记是没什么技术含量的,这里只抱着理清一些基本概念的想法练练笔。

      当我们要用到随机数时,通常是要用到C程序库中所提供的rand() ,但因为其“伪”性,所以如果要产生真正的随机序列必须要了解“ 种子”的概念。开始的时候这个“种子”是我不知道的。如今总算找到了答案。

      @因为随机数产生函数 rand()(函数原型int rand(void);)的机理是通过一个静态全局变量来产生的,即种子。默认情况下种子 = = 1;如下:

      ststic unsigned long int next = 1;     //种子

      int rand ( void)

      {

            next = next * 1103515245 + 12345;

            return (unsigned int ) (next / 65536) % 32768; //可见产生的随机数是不大于 32768;

      } 

      可见每次调用此函数的时候产生的数当然就一样咯。

     @所以就又有了个重置种子的第二个函数 srand ().(函数原型 void srand(unsigned int seed));来帮助rand()了,但这往往还是达不到我们的要求,因为我们只有每次通过重置种子来改变产生的随机数,这常常显得比较麻烦。

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

     @要是可以自动重置种子该多好啊。这是可行的。因为一个系统的时钟往往是在不断的变化的。因此可以通过一个能够从系统时钟中得到不同返回值的函数time()来初始化种子。

     #include <time.h>

      srand((unsigned int) time(0))

     这样就可以随着每次的rand()而产生不同的随机数了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值