我正在使用srand(
)使用固定种子,我需要在一次执行中使用一组不同的种子(如100,200,300,...,1000)运行测试。这可能吗?事情是srand()
是在main的开头定义的,所以我不知道如何用变量控制种子。
答案 0 :(得分:3)
您可以使用srand(time(NULL)),并包含time.h标头。它使用当前系统时间初始化srand()。希望能帮助到你。 !
答案 1 :(得分:0)
如果单元测试测试使用rand()的代码,那么您应该在测试设置中调用srand(<const>)
。
通过这种方式,测试的行为与套件的一部分独立运行的方式相同。
答案 2 :(得分:0)
对于在srand调用中使用的每个不同的种子值,可以预期伪随机数生成器在随后的rand调用中生成不同的连续结果。 使用相同种子的两个不同初始化指示伪随机生成器为后续调用rand生成相同的连续结果。
这可能说明:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
printf ("First number: %d\n", rand() % 100);
srand ( time(NULL) );
printf ("Random number: %d\n", rand() % 100);
srand ( 1 );
printf ("Again the first number: %d\n", rand() %100);
srand ( time(NULL) );
printf ("Random number: %d\n", rand() % 100);
printf ("Random number: %d\n", rand() % 100);
printf ("Random number: %d\n", rand() % 100);
printf ("Random number: %d\n", rand() % 100);
return 0;
}
输出:
First number: 41
Random number: 76
Again the first number: 41
Random number: 76
Random number: 14
Random number: 74
Random number: 41
Press any key to continue