我对这个等式有疑问:E * cotangent((q * E)/(k * t)) = nkT/q
。
我正在寻找E的价值观,以实现平等 知道: q 和 k 是常数, t 和 n 是变量。 为此我尝试了这段代码,但显然失败了:
public class Equation {
public static double q = 1.6E-19;
public static double k = 1.38E-23;
//double y = E * 1/Math.tan(E*q/k*t);
//DecimalFormat df = new DecimalFormat("#.#####");
public static double[] nktq = new double[]{0.02857,0.02674,0.03118,0.02829,0.02976,0.02898,0.03001,0.02953,0.032};
public static double[] t = new double[]{80,100,150,200,250,280,300,320,350};
public static double[] n = new double[]{4.14,3.1,2.41,1.64,1.38,1.20,1.16,1.07,1.06};
private static DecimalFormat df2 = new DecimalFormat(".##");
public static double genE(){
double start = 0;
double end = 30;
double random = new Random().nextDouble();
// DecimalFormat df = new DecimalFormat("#.##");
// df.setRoundingMode(RoundingMode.FLOOR);
double E = start + (random * (end - start));
//double E = new Double(df.format(result));
System.out.println(df2.format(E));
return E;
}
public static void main(String[] args) {
//double y = E * 1/Math.tan(E*q/k*t);
//DecimalFormat df = new DecimalFormat("#.#####")
double E = 0;
while ( Math.round(E * 1/Math.tan((q * E)/(k * t[0]))*100000)!= nktq[0]){
genE();
}
}
}
感谢任何帮助!
答案 0 :(得分:2)
您为每个值创建一个新的Random
实例。那是错的。
以下是我建议您尝试的内容:
public class Equation {
private Random random;
public Equation() { this(null); }
public Equation(Long seed) {
this.random = (seed == null) ? new Random() : new Random(seed.longValue());
}
public double nextConst() { return this.random.nextDouble(); }
public double nextConst(double start, double end) {
return start + (end-start)*this.random.nextDouble();
}
// Add the rest of your stuff here.
}