所谓的随机数在计算机中恐怕难以真正实现,但是我们可以实现伪随机数;通过预先设计好的公式:
next = a*next+b;
这样每次调用就会出现不同的值,当我们每次设定不同的next作为初值就可以实现随机数了。
static unsigned long _next = 1;
void _srand(unsigned int seed){
_next = seed;
}
int _rand(){
_next = _next * 1103515245 + 12345;
return ((unsigned)(_next / 65536) % 32768);
}
在使用过程中条用time()设定next初值,即可实现不同的初始值种子,使用如下:
_srand(time(NULL));
for (int i = 0; i < 10; ++i){
printf("%d\n", _rand()%100);
}