我用以下方式编写了一个函数:
public static double acceptance(double E1, double E2, int t) {
return exp((E1 - E2) / t);
}
现在假设我想将一个值分配给变量x
,概率为exp((E1-E2)/t)
。
所以,为了做到这一点,我将要做什么?如果按以下方式写:
if(acceptance(double E1, double E2, int t) > Math.random()) // E1,E2 and t have certain values
x = value;
它是正确的还是我必须做出任何改变?
答案 0 :(得分:1)
是的,如果Math.random()始终在0-1范围内,它应该可以工作 但是我会切换值以使其更具可读性。 E.g:
if(Math.random() < acceptance(...)) {...}
答案 1 :(得分:0)
看起来应该是&#34;&lt;&#34;而不是&#34;&gt;&#34;,假设E1,E2和t总是给你exp((E1 - E2)/ t)在[0.0,1.0)范围内