我正在编写代码以生成数学常数。常量具有firstValue。他们有生成值的方法。必须使用粒度参数在波动空间中随机选择生成的值。这意味着将随机数乘以粒度参数,以使生成的随机值停留在波动空间中。 该代码有效,它在空间中生成随机值。但是,当某些常量必须为0.9时,它们的形式为0.90000004。 类aleatoire(min,max)生成一个介于min和max之间的数字,该数字包含在其方法generate中。我测试了类Aleatoire,它的效果很好,仅提供了int。
public class Constante {
private float firstValue;
private float fluctuation;
private float granularite;
private float value;
private int stepNumber;
public Constante(float firstValue, float fluctuation, float granularite) {
this.firstValue = firstValue;
this.fluctuation = fluctuation;
this.granularite=granularite;
this.value=firstValue;
this.stepNumber= (int)(((fluctuation/granularite)));
}
public void generate(){
Aleatoire random=new Aleatoire(0,stepNumber);
if (new Aleatoire(1,2).generate()%2!=0) {
value = firstValue + (random.generate() * granularite);
}
else{
value = firstValue - (random.generate() * granularite);
}
}
public float getValue(){
return value;
}
}