设为首页 加入收藏

TOP

Java实现对数正态分布
2014-11-24 14:39:13 来源: 作者: 【 】 浏览:9
Tags:Java 实现 对数 分布


Java内部实现:标准正态分布。即:Polar Method方法


public double nextDouble() {


return (((long)(next(26)) << 27) + next(27))


/ (double)(1L << 53);


}



private double nextNextGaussian;


private boolean haveNextNextGaussian = false;



synchronized public double nextGaussian() {


// See Knuth, ACP, Section 3.4.1 Algorithm C.


if (haveNextNextGaussian) {


haveNextNextGaussian = false;


return nextNextGaussian;


} else {


double v1, v2, s;


do {


v1 = 2 * nextDouble() - 1; // between -1 and 1


v2 = 2 * nextDouble() - 1; // between -1 and 1


s = v1 * v1 + v2 * v2;


} while (s >= 1 || s == 0);


double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s);


nextNextGaussian = v2 * multiplier;


haveNextNextGaussian = true;


return v1 * multiplier;


}


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java Random随机数 下一篇Java实现标准正态分布

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: