2012-09-04 37 views
0

我正在使用srand(),并且需要在一次执行中使用一组不同种子(如100,200,300,...,1000)来运行测试。这可能吗?事情是srand()是在main的开头定义的,所以我不知道如何用变量控制种子。如何在运行时更改srand()

+3

srand()函数可用于任何你想要的。如果你想要一个特定的测试有一个特定的种子,那么在测试之前调用srand(种子)。 –

+0

只是把代码放在一个for循环中,并在每次迭代时调用srand aht开头。 – NoSenseEtAl

+0

您是否在问如何特别修改种子中的变量以便输出100,200 ...... 1000?或者其他任何序列? – BlueMeanie

回答

3

您可以使用srand(time(NULL)),并包含time.h头文件。它用当前系统时间初始化srand()。希望能帮助到你。 !

+2

这对单元测试并不是很有用。在运行单元测试时,您需要rand()返回相同的数字集合,以便在每次测试开始时使用带有常数值的srand(),以确保获得一致的结果。 –

0

如果单元测试测试使用rand()的代码,则应该调用srand(<const>)作为测试设置的一部分。

这种方式测试行为以相同的方式是天气它是一个套件的一部分是独立运行。

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