Java—实现一个生成正态分布数字的随机向量生成器
我正在尝试用Java实现一个随机向量生成器,它生成正态分布的双值,作为蒙特卡罗模拟的一部分。到目前为止,我的方法是编写一个类GaussianRandomNumberGenerator,它使用ApacheComms库构建同名对象,其中包含两个关键输入,向量长度和一个随机生成器Java—实现一个生成正态分布数字的随机向量生成器,java,random,distribution,apache-commons,Java,Random,Distribution,Apache Commons,我正在尝试用Java实现一个随机向量生成器,它生成正态分布的双值,作为蒙特卡罗模拟的一部分。到目前为止,我的方法是编写一个类GaussianRandomNumberGenerator,它使用ApacheComms库构建同名对象,其中包含两个关键输入,向量长度和一个随机生成器 package mcPkg; import org.apache.commons.math3.random.RandomGenerator; public abstract class GaussianRandomNum
package mcPkg;
import org.apache.commons.math3.random.RandomGenerator;
public abstract class GaussianRandomNumberGenerator implements RandomVectorGenerator{
private int N;
private RandomGenerator rg;
public GaussianRandomNumberGenerator(int N, RandomGenerator rg){
this.N = N;
this.rg = rg;
}
public double nextNormalizedDouble() {
return rg.nextGaussian();
}
@Override
public double[] getVector() {
double[] vector = new double[N];
for ( int i = 0; i < vector.length; ++i){
vector[i] = nextNormalizedDouble();
}
return vector;
}
}
不幸的是,当我试图在主程序中运行测试时,我得到一个错误,错误是:
无法实例化GaussianRandomNumberGenerator类型
关于局部变量grng(见下面的代码):
如果您能深入了解为什么会发生这种情况,并提出有效解决该问题的建议,我们将不胜感激。提前谢谢 我认为
摘要关键字是问题所在。我建议将其从GaussianRandomNumberGenerator
类中删除。谢谢!它就像一个符咒。把另一个疏忽归咎于我的Java新手身份。非常感谢您的帮助。但是RandomGenerator没有正确初始化?怎么做?
package mcPkg;
public interface RandomVectorGenerator {
public double[] getVector();
}
package mcPkg;
import org.apache.commons.math3.random.GaussianRandomGenerator;
import org.apache.commons.math3.random.RandomGenerator;
import mcPkg.GaussianRandomNumberGenerator;
import mcPkg.RandomVectorGenerator;
public class MonteCarloTest {
public static void main(String[] args) {
RandomGenerator rg;
GaussianRandomNumberGenerator grng = new GaussianRandomNumberGenerator(10, rg);
grng.getVector();
}
}