C语言实现正态分布或高斯分布

Box-Muller算法是一种将均匀分布的随机数转换为正态分布的方法。通过两个在(0,1]区间内的独立随机数U1和U2,计算出正态分布的随机数Z,公式包括Z=R*cos(θ)或Z=R*sin(θ),其中R=sqrt(-2*ln(U2)),θ=2*π*U1。最终,可通过X=m+(Z*sd)将Z映射到特定平均值m和标准偏差sd的正态分布。" 114367555,7483360,使用Sublime Text快速创建HTML页面,"['前端开发', 'Sublime Text', 'HTML']
摘要由CSDN通过智能技术生成

box-muller

概述

  Box-Muller,算法隐含的原理非常深奥,但结果却是相当简单。一般是要得到服从正态分布的随机数,基本思想是先得到服从均匀分布的随机数再将服从均匀分布的随机数转变为服从正态分布。

方法

  如果在 (0,1] 值域内有两个独立的随机数字 U1 和 U2,
  
  可以使用以下两个等式中的任一个算出一个正态分布的随机数字 Z:
  
  Z = R * cos( θ )
  或
  Z = R * sin( θ )
  
  其中,
  R = sqrt(-2 * ln(U2))
  
  θ = 2 * π * U1
  
  正态值 Z 有一个等于 0 的平均值和一个等于 1 的标准偏差,可使用以下等式将 Z 映射到一个平均值为 m、标准偏差为 sd 的统计量 X:
  
  X = m + (Z * sd)

#include <stdlib.h>
#include <stdio.h>
#define PI 3.141592654double 
  double gaussrand( )
{
    static <
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值