0
我试图在Java中实现一个随机向量生成器,它生成正态分布的double值作为蒙特卡洛模拟的一部分。到目前为止,我的方法是编写一个类,GaussianRandomNumberGenerator,它使用apache commoms库来构建其具有2个键输入,矢量长度和一个RandomGenerator的同名对象。Java - 实现产生正态分布的数字的随机向量生成器
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;
}
}
类应该然后利用一个接口,RandomVectorGenerator,在主程序(我将需要与其他类的其他任务的接口):
package mcPkg;
public interface RandomVectorGenerator {
public double[] getVector();
}
不幸的是,当我尝试在主程序中运行测试,出现错误提示:
无法实例化类型GaussianRandomNumberGenerator
与问候局部变量grng(见下面的代码):
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();
}
}
上为什么发生这种情况,以及建议为有效解决这一问题的任何见解,将不胜感激。提前致谢!
谢谢!它像一个魅力。对Java的新手状态进行另一个监督。非常感谢您的协助。 – user2736224 2014-10-19 00:00:31
但是RandomGenerator没有正确初始化?怎么做? – user77005 2016-01-20 11:06:02