最近经常有用到随机数,比如做快排的时候,但每次都是直接rand(),没有真正搞懂过随机数啊,种子啊什么的,这回来完整的学习一些。
rand():在0-RAND_MAX之间随机产生一个数。头文件为stdlib.h
RAND_MAX的范围最少是在32767之间(int)。用unsigned int 双字节是65535,四字节是4294967295的整数范围。0~RAND_MAX每个数字被选中的机率是相同的。
但这个函数有一个问题:每次运行产生的结果都是一样的。
int main()
{
cout<<rand();
}
就这样,你每次执行都会产生一样的结果。不信你试试。
为了解决这个问题,就需要一个随机数种子
方法是使用这个函数:void srand(unsigned int seed)
我们用当前时钟作为种子,这样每次运行结果就不一样了