【发布时间】:2021-11-12 08:30:03
【问题描述】:
我在两个不同的环境(Linux 和 Visual Studio)中编译了完全相同的代码。但我注意到输出不一样。我试图以不同的方式解决这个问题,但失败了。 我需要知道为什么?
是我错过了什么还是什么?
我希望输出保持不变,以继续推进我的项目。谁能帮忙。
我的代码:
void mix_dataset(array<array<int, 20>, 5430>& array_X_dataset, array<int, 5430>& array_Y_dataset) {
size_t len = array_X_dataset.size();
for (size_t i = 0; i < len; ++i) {
size_t swap_index = rand() % len;
if (i == swap_index)
continue;
array<int, 20> data_point{ };
data_point = array_X_dataset[i];
array_X_dataset[i] = array_X_dataset[swap_index];
array_X_dataset[swap_index] = data_point;
int Y = array_Y_dataset[i];
array_Y_dataset[i] = array_Y_dataset[swap_index];
array_Y_dataset[swap_index] = Y;
}
}
int main()
{
string filename = ".//dataset.csv";
static array<array<int, 20>, 5430> array_X_dataset{};
static array<int, 5430> array_Y_dataset{};
bool error = read_data_set(filename, array_X_dataset, array_Y_dataset);
if (error) {
printf("Exiting with error while reading dataset file \n");
exit(-1);
}
srand(3);
mix_dataset(array_X_dataset, array_Y_dataset);
int* array_Y_set = new int[5430];
int** array_X_set = new int* [5430];
for (int i = 0; i < 5430; i++) {
array_X_set[i] = new int[20];
}
for (int i = 0; i < 5430; i++) {
for (int j = 0; j < 20; j++)
array_X_set[i][j] = array_X_dataset[i][j];
array_Y_set[i] = array_Y_dataset[i];
}
printf("printout the whole dataset after random mixing:\n"); // the outputs are different
for (int i = 0; i < 5430; i++) {
printf(" %d ", i);
for (int j = 0; j < 20; j++)
printf(" %d ", array_X_set[i][j]);
printf(" %d ", array_Y_set[i]);
printf("\n");
}
}
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: c++ linux visual-studio