1. 程式人生 > >Java資料結構:隨機生成正太分佈數

Java資料結構:隨機生成正太分佈數

正態分佈數≈均值+方差*(x)  x:為隨機分佈-均值,詳情如下

public class 產生正太分佈的隨機生成數 {
	static double rand01(double[] r) {		//生成0-1的隨機數
		double base, u, v, p, temp1, temp2, temp3;
		base = 256.0;
		u = 17.0;
		v = 139.0;
		temp1 = u * (r[0]) + v;
		temp2 = (int) (temp1 / base);
		temp3 = temp1 - temp2 * base;
		r[0] = temp3;
		p = r[0] / base;
		return p;
	}
	static double randZT(double u,double t,double r[]){
		int i=0;
		double total=0.0;
		for(i=0;i<12;i++){
			total+=rand01(r);    //累加
		}
		return u+t*(total-6.0); //6.0為12個0-1的隨機數的平均值,很好理解
	}
	public static void main(String[] args) {
		int i;
		double m,n;
		double[]r={5.0};
		m=2.0;    //m為均值,n為標準差(方差是標準差的平方)
		n=3.5;
		for(i=0;i<10;i++){
			System.out.println(randZT(m,n,r));  //生成正太分佈數
		}
	}
}