69,371
社区成员
发帖
与我相关
我的任务
分享
我已经了解rand生成的数组与srand初始化种子的关系,但是当我将srand放在循环内的时候,为什么在长时间运行中srand的种子依然没有变化呢?
int result_rand(int x)
{
//srand(time(NULL)); //mark 1
int count;
int using_s;
int rest, passby; //定义为局部变量会分层保存值,用于中转每次剩余材料数与生成材料数
if (x >= 3)
{
passby = x / 3;
rest = x % 3;
for (count = 0; count < passby; count++)
{
srand(time(NULL)); //mark 2
using_s = rand() % 100 + 1;
if (using_s <= 25)
rest++;
}
ans = passby + result_rand(rest);
return ans;
}
else
return 0;
}
该代码如上;当我在循环外srand时(即mark 1 处),随机数是正常的;但是在循环内srand(mark 2 处)时rand并不会随着时间变化而发生变化,想知道这是为什么(即为什么循环内的time(NULL)并没有因为程序运行时间的延长而发生变化)。