在种的一个成员函数里使用了srand,类后面的成员函数还需要使用srand吗
在类的一个成员函数里使用了srand,类后面的成员函数还需要使用srand吗
在类的一个成员函数里使用了srand,然后用了rand得到随机数,类后面的成员函数还需要使用srand吗,后面的函数也需要rand得到随机数。
------解决方案--------------------
我觉得:srand不属于对象,在你的进程里调用一次,那直到你的进程结束。
------解决方案--------------------
你在成员函数里面写,那万一这个成员函数没调用怎么办?或者万一其他成员函数在它之前调用怎么办?
整个程序运行期间只需要srand一次,但是srand的位置还是要当心的。
------解决方案--------------------
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\rand.c
由此可见,srand需要且只要在每个线程(包括进程本身对应的那个线程)初始化时调用一次。
在类的一个成员函数里使用了srand,然后用了rand得到随机数,类后面的成员函数还需要使用srand吗,后面的函数也需要rand得到随机数。
------解决方案--------------------
我觉得:srand不属于对象,在你的进程里调用一次,那直到你的进程结束。
------解决方案--------------------
你在成员函数里面写,那万一这个成员函数没调用怎么办?或者万一其他成员函数在它之前调用怎么办?
整个程序运行期间只需要srand一次,但是srand的位置还是要当心的。
------解决方案--------------------
C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\rand.c
/***
*rand.c - random number generator
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
*Purpose:
* defines rand(), srand() - random number generator
*
*******************************************************************************/
#include <cruntime.h>
#include <mtdll.h>
#include <stddef.h>
#include <stdlib.h>
/***
*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
)
{
_getptd()->_holdrand = (unsigned long)seed;
}
/***
*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
)
{
_ptiddata ptd = _getptd();
return( ((ptd->_holdrand = ptd->_holdrand * 214013L
+ 2531011L) >> 16) & 0x7fff );
}
由此可见,srand需要且只要在每个线程(包括进程本身对应的那个线程)初始化时调用一次。