C语言中的随机数 srand ( ) 和 rand ( )

    在C语言中,生成一个随机数,一般利用两个函数,即void srand ( unsigned int seed ) 和 int rand ( void )。


    srand() 函数用于生成一个随机数种子,种子的值等于参数seed,这个参数由我们指定一个数、式子或者函数值。而 rand() 函数根据这个随机数种子进行运算生成一个[ 0 , RAND_MAX (int或 unsigned int最大值) ]范围内的随机数。


    在一个程序中只需运行一次srand函数即可,若参数seed是一个固定值,则同一程序中多次调用rand函数生成的数是随机数,但多次调用这一程序时,由于初始的随机数种子相同,所以生成的随机数列完全相同,因此一般使用系统时间函数time(NULL)(在time.h文件中,返回从1970年1月1日0点到现在的秒数的值)作为参数seed,使每次调用程序时的种子或者随机数列也具有一定的随机性。


    例如给int x 赋值为 [ 0 , 100 ) 的随机整数,先调用 srand(time(NULL)),再利用表达式x = rand()%100 即可。


    如果在一个程序在中,循环调用 srand(time(NULL)) 和 rand() 函数,由于现在计算机运行快速,两次循环的时间差不到1秒,使每次的随机数种子相同,从而生成的随机数也相同。即使在循环中加延时函数,由于时差不大,生成的随机数也相差不大,而且使程序运行时间大大增加。因此,一定要在循环外使用srand函数,一个程序中使用一次即可。


    如果对随机性要求较高,要避免采用取模操作%,这是为了避免在某些情况下,某些伪随机数生成器产生的数,低位不够随机的问题,此时应采用 x = (int) (100.0 * rand() / (RAND_MAX + 1.0)) ,生成一个 [ 0 , 100 ) 的随机浮点数,再将其转换为 int 型,从而得到一个 0 ~ 99 的随机整数。

    

    

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值