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