srand()和rand()随机数

img


再书上看到的代码
看不懂con+1是什么意思
运行结果如下

img


为什么运行结果是41到71不是随机数吗

con+1是给srand()传入一个参数,以产生一个随机数种子,然后rand()就会根据随机数种子产生随机数,con+1的目的是为了产生不同的随机数种子,以产生不同的随机数。


不过for循环内因为随机数的种子是确定的,所以产生的随机数也是确定的,但是与不使用srand()设置随机数种子产生的随机数不同,意思就是随机数种子和产生的随机数之间有关联关系。
参考链接:
C语言中 srand()函数和rand()函数_Nuo__的博客-CSDN博客_c语言srand

仅供参考:C:\Program Files (x86)\Microsoft SDK\src\crt\rand.c

/***
*rand.c - random number generator
*
*       Copyright (c) 1985-2001, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines rand(), srand() - random number generator
*
*******************************************************************************/

#include <cruntime.h>
#include <mtdll.h>
#include <stddef.h>
#include <stdlib.h>

#ifndef _MT
static long holdrand = 1L;
#endif  /* _MT */

/***
*void srand(seed) - seed the random number generator
*
*Purpose:
*       Seeds the random number generator with the int given.  Adapted from the
*       BASIC random number generator.
*
*Entry:
*       unsigned seed - seed to seed rand # generator with
*
*Exit:
*       None.
*
*Exceptions:
*
*******************************************************************************/

void __cdecl srand (
        unsigned int seed
        )
{
#ifdef _MT

        _getptd()->_holdrand = (unsigned long)seed;

#else  /* _MT */
        holdrand = (long)seed;
#endif  /* _MT */
}


/***
*int rand() - returns a random number
*
*Purpose:
*       returns a pseudo-random number 0 through 32767.
*
*Entry:
*       None.
*
*Exit:
*       Returns a pseudo-random number 0 through 32767.
*
*Exceptions:
*
*******************************************************************************/

int __cdecl rand (
        void
        )
{
#ifdef _MT

        _ptiddata ptd = _getptd();

        return( ((ptd->_holdrand = ptd->_holdrand * 214013L
            + 2531011L) >> 16) & 0x7fff );

#else  /* _MT */
        return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
#endif  /* _MT */
}



The srand() function sets its argument as the seed for a new sequence of pseudo-random integers to be returned by rand().

这个srand 只是为了给 rand 增加一个种子。不是这么使用
你把 srand() 放到for 循环前面