for (int i = 0; i < 3 * point_num * phase_num; i++) {
srand(1);
int num = rand()%1000;
data[i] = num;
srand(1);
int num = rand()%1000;
data[i] = num;
}
这样写每次都是一个输出,把srand放到for外面就OK了,后来查看rand.c的代码,发现srand只是设置个初值,每次rand会修改这个值。
for (int i = 0; i < 3 * point_num * phase_num; i++) {
srand((int)time(NULL));
int num = rand()%1000;
data[i] = num;
}
这样写随机效果也不理想,执行速度太快,很多time的初值都是一样的。
另:关于rand的数学原理(线性同余):http://www.cnblogs.com/xkfz007/archive/2012/03/27/2420154.html