我试图在两个不同的数组中生成不同的数字,并且由于某种原因,两个数组中的数字是相同的。
这是我的代码:
#define SIZE 5
void main(){
int* num1;
int* num2;
num1 = new int[SIZE];
num2 = new int[SIZE];
random(num1);
random(num2);
int i;
for (i = 0; i < SIZE; i++)
cout << num1[i];
cout << endl;
for (i = 0; i < SIZE; i++)
cout << num2[i];}
和随机函数:
void random(int* num){
int i;
time_t t;
srand((unsigned)time(&t));
for (i = 0; i < SIZE; i++ )
num[i] = (rand() % MAX + 1);}
输出始终与两个数组中的5位数字相同 (例如,数组1将是29384,数组2也是29384)
任何想法我该如何解决?
感谢。
答案 0 :(得分:2)
在开始使用srand
之前,您应该只调用rand
一次。
现在,代码运行得如此之快,以至于您获得两次调用的相同时间值。
答案 1 :(得分:2)
由于程序运行如此之快,这一行
srand((unsigned)time(&t));
可能会看到具有相同值的随机数生成器。
在int main()
之后将此行放在开头(使用void
时出错)
答案 2 :(得分:1)
函数srand((无符号)的时间(&amp; T公司));
您应将此来电移至main
。