今天想写个冒泡排序试一下,需要使用到随机数。于是用rand()循环获取填充一下。
int arr[6];
for (int i = 0; i < 6; i++) {
arr[i] = rand();
cout << arr[i] << " ";
}
cout<<endl;
确实能生成6个随机数 (0-32767)RAND_MAX,
但是每次运行程序,生成的数组均相同。
原来还是因为伪随机的关系,需要重置种子。
(需引入 time.h包)
int arr[6];
time_t t;
time(&t);
srand(t);
for (int i = 0; i < 6; i++) {
arr[i] = rand();
cout << arr[i] << " ";
}
cout << endl;
这样就可以了。
顺带一提,如果在循环体里面重置种子,最终获取的6个数字均相同。
*附带 冒泡排序:
int arr[6];
time_t t;
time(&t);
srand(t);
for (int i = 0; i < 6; i++) {
arr[i] = rand();
cout << arr[i] << " ";
}
cout << endl;
int length = 6;
int tmp;
while (length-1)
{
for (int i = 0; i < length-1; i++) {
if (arr[i] > arr[i + 1]) {
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
}
}
length = length - 1;
}
for (int i = 0; i < 6; i++) {
cout << arr[i] <<" ";
}
cout << endl;