我怎样才能每次使用相同的随机数组?

时间:2016-02-27 17:03:23

标签: c arrays

我将随机数组保存在文本文件中,以便我可以再次加载它。有没有更好的方法来保存它而不使用txt文件?

for(i=0;i<10000;i++);
clientdata[i]=rand();

FILE * fp; 
fp = fopen ("client.txt", "w+");
fwrite(clientdata, sizeof clientdata[0], sizeof clientdata / sizeof clientdata[0], f);
fclose(f);

3 个答案:

答案 0 :(得分:5)

您可以像这样使用随机种子,以确保每次都生成相同的随机数:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int seed = 1892; //any number, this is the random seed
    srand(seed); //call this with the random seed argument

    for(i=0;i<10000;i++);
       clientdata[i]=rand();
    //do something, you will generate the same random data every time
}

答案 1 :(得分:2)

来自C库的函数rand(rand48?)会生成一个随机序列。

然而,这是预定义的。

可以使用srand选择不同的序列。要获得相同的序列,请为srand使用相同的值。

example using rand/srand

答案 2 :(得分:2)

使用srand启动随机数序列并重复使用相同的种子值重新生成相同的序列:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
    for(int i=1; i<=2; i++){
        srand (22);        // can be any value -- just the same to restart the series
        for(int j=1; j<=10; j++)
               printf ("Random Number %d: %d\n", j, rand() %100);
    }
    return 0;
}

// regenerates the same series of rand numbers...