我是个c++新手,希望各位能帮个忙
我在编写遗传算法程序时,里面有很多个函数都需要随机数,而且需要运行很多遍(因为随机数每次生成的不一样,多算几次得到最优结果);我知道如果直接用a=rand()那么每次运行时得到的随机数都一样,比如第一次得到1、3、5、9,那么再运行一遍还是1、3、5、9,所以就必须用srand(time(0))这样来利用时间来初始化种子
我的问题是,我这个程序里面有很多个函数,每个都需要随机数,那么我是否应该在每个函数里面都写一句strand(time(0))呢?,还是只需要在main函数里面写一个,然后每个函数只需要写a=rand()就可以了呢?这两种有什么区别?我实验了一下,如果按如下编写
int a;
int b
srand(time(0));
for(int i=0;i<10;i++) {
a=rand()%101;
cout<<a<<'\t';
}
srand(time(0));
for(int ii=0;ii<10;ii++) {
b=rand()%101;
cout<<b<<'\t';
}
这样会得到两组完全一样的结果,例如
5 4 9 6 8 7 2 3 6 5
5 4 9 6 8 7 2 3 6 5
请问这是什么原因?
如果回答的好,我还可以再加分,请大家帮帮我