我目前正在用 C 编写一些用于模拟退火的代码。我在使用这个函数时遇到了问题:
int metrop (E, E1, T)
{
int j;
if (exp((-E-E1)/T) > ran())
j = 2;
printf("Random# %lf\n",ran());
if (E-E1<0)
j = 2;
else
j = 0;
if (j=1)
printf("Accepted %d",j);
if (j=0)
printf("Rejected");
return(j);
}
无论 E、E1 和 T 的输入如何,“if (j=1) printf("Accepted %lf",j);" 似乎已执行;给出“已接受 1”的输出。即使在这段代码中,j 不可能等于 1。我怀疑我可能引用了错误的数据类型或类似的东西。有人有想法么?
谢谢!