Я использую C, чтобы запустить симуляцию.Изменяет значения массива в каждой итерации.Я фиксирую общее количество итераций.Есть два массива, в то время как я использую 1 для обновления 2 в нечетных шагах и 2 для обновления 1 в четных шагах.Бывает, что когда я добавляю какую-то неважную команду в цикл, результат меняется, но результаты совпадают, когда я запускаю один и тот же код несколько раз.
Я думал, что это может быть связано с процессором или памятью.Какова возможная причина этого?
Например, я добавляю функцию printf в цикл, и результат отличается от отсутствия функции printf.Я попытался добавить sleep (1) в цикл, и, как и ожидалось, результат изменился.
// This is an illustration code.
TOTAL_STEP = 3000,
int i, j, k, t=0;
double a[I][J][K];
double b[I][J][K];
while (t < TOTAL_STEP)
{
if (odd step)
{
for (i = 0; i < I; i++)
{
for (j = 0; j < J; j++)
{
for (k = 0; k < K; k++)
{
b[i][j][k] = some_function(a);
}
}
}
else
{
for (i = 0; i < I; i++)
{
for (j = 0; j < J; j++)
{
for (k = 0; k < K; k++)
{
a[i][j][k] = some_function(b);
}
}
}
t++;
printf(" %2.5f \n", a[0][1][1]) // adding this will change the result
sleep(1) // adding this will also change the result
}