srand()是不是用不同的种子就一定得到不同的伪随机序列 
偶有点偏理论,因此这个问题很无聊,但希望高手不吝赐教;)

解决方案 »

  1.   

    得到的数在0和MAX_RAND之间啦,如果你申请态多的话,当然有可能重复
      

  2.   

    呵呵  楼上误解了 
    随机数当然是可能重复的 但是用一个随机种子 加上n个rand函数就可以产生一个长度为n的随机序列 不是吗
    我是想知道 序列有没有重复的可能呢 呵呵 如果有srand和rand的实现源码就好了
      

  3.   

    /***
    *rand.c - random number generator
    *
    *       Copyright (c) 1985-1997, 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 */
    }