正态分布

package com.heaven;

public class NormTest {

	public static double normrnd(double mu, double sigma) {
		double N = 12;
		double x = 0, temp = N;
		do {
			x = 0;
			for (int i = 0; i < N; i++)
				x = x + (Math.random());
			x = (x - temp / 2) / (Math.sqrt(temp / 12));
			x = mu + x * Math.sqrt(sigma);
		} while (x <= 0); 		return x;
	}

	public static double[] addInv(double[] r) {
		double[] result = new double[r.length * 2];
		for (int i = 0; i < result.length; i += 2) {
			result[i] = r[i / 2];
			result[i + 1] = -r[i / 2];
		}
		return result;
	}

	public static void main(String[] args) {
		double[] r = new double[50];
		double miu = 0;
		double sigma2 = 1;
		for (int i = 0; i < r.length; i++) {
			r[i] = normrnd(miu, sigma2);
		}
		double[] result = addInv(r);
		for (int i = 0; i < result.length; i++) {
			System.out.println(result[i]);
		}
	}

}

猜你喜欢

转载自ggyyleo.iteye.com/blog/630455