【发布时间】:2017-09-28 00:54:00
【问题描述】:
注意:这篇文章不是如何在 C 中生成随机数的重复,它没有回答我的问题。
我有一个函数是:
double generator(double * ran_i) {
srand(time(NULL));
return ran_i[rand()%1000];
}
它需要一个包含 1000 个数字的数组,然后我尝试调用:
for(i=0; i< 1000; ++i) {
printf("%lf", generator(ran[0]));
}
但是在那个循环中它总是给我相同的数字。我发现 time(NULL) 没有足够快地改变种子。如何在每个循环中更快甚至更好地更改此种子?此外,我只能使用与 ANSI C 标准兼容的库。
【问题讨论】:
-
您应该只为 rng 播种一次,而不是使用不同的种子。 rng 的工作是为您提供一个随机数序列,种子只是确定该序列中的起点
-
你不会改变你的种子,期间。你认为你为什么要这样做?
-
建议的副本包含您的问题的答案,但不是您的问题。播种一次 PRNG。使用相同的值重新播种会为您提供相同的序列。如果你坚持重新播种,那是为了什么?
-
我不确定你对标记副本的狡辩是什么;它询问的几乎正是您询问的代码。最合适的答案对两者都是一样的。
标签: c random time random-seed