rand
and srand
are usually implemented as a simple LCG, you can easily write your own (it's few lines of code) without looking for the sources of rand
and srand
. Notice that, if you need random numbers for "serious" purposes (e.g. cryptography), there are much better RNGs than LCG.
By the way, the C standard itself includes a sample implementation of rand
and srand
:
static unsigned long int next = 1;
int rand(void) // RAND_MAX assumed to be 32767
{
next = next * 1103515245 + 12345;
return (unsigned int)(next/65536) % 32768;
}
void srand(unsigned int seed)
{
next = seed;
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…