c语言随机数范围问题

rand()函数产生的是伪随机数即用一個种子(seed)产生的序列,linux下的rand是用类似下面的代码实现的:

rand()返回值是一个可以通过seed计算出来的序列每次调用rand()时它会返回序列里的下一个元素嘚值。当然第一次调用时返回的是序列里第1个元素的值

如果你没有调用srand设置随机数种子,seed的默认值会是0而seed为0时所决定的序列是固定的,而第一次调用rand()就是返回这个固定序列里的第1个元素那它的值也是固定的,自然你的程序每次输出都一样了

所以正确的写法应该是程序初始化时用srand设置不同的随机数种子(只需要设置一次),例如srand(time(NULL))但要注意,time(NULL)的值是隔1秒才改变一次的

下面这段程序,只要你不是在同┅秒内执行两次每次输出结果都是不一样的:

我要回帖

更多关于 c语言随机数范围 的文章

 

随机推荐