正太分布函数和反函数 标量值函数 (借鉴)

2023-05-16

--标准正态分布函数
CREATE function [dbo].[normcdf] (   @p    decimal(28,18)       )                                                               
AS                                                                                                      
begin                                                                                                                                    
    declare @L decimal(28,18)                                                                                           
    declare @K decimal(28,18)                                                                                           
    declare @dCND decimal(28,18)                                                                                        
    declare @pi decimal(28,18)                                                                                          
                                                                                                               
    declare @a1 decimal(28,18)                                                                                          
    declare @a2 decimal(28,18)                                                                                          
    declare @a3 decimal(28,18)                                                                                           
    declare @a4 decimal(28,18)                                                                                           
    declare @a5 decimal(28,18)                                                                                           
                                                                                                                                                           
    select @L = 0.0                                                                                            
    select @K = 0.0                                                                                            
    select @dCND = 0.0                                                                                         
                                                                                                               
    select @a1 = 0.31938153                                                                                    
    select @a2 = -0.356563782                                                                                  
    select @a3 = 1.781477937                                                                                   
    select @a4 = -1.821255978                                                                                  
    select @a5 = 1.330274429                                                                                   
    select @pi = 3.1415926535897932384626433832795                                                             
    select @L = Abs(@p)                                                                                        
                                                                                                               
    if @L >= 30                                                                                                
    begin                                                                                                      
        if sign(@p) = 1 begin                                                                                  
            select @n_result = 1                                                                               
                                                                                               
        end else begin                                                                                         
            select @n_result = 0                                                                               
                                                                                               
           end                                                                                                 
    end                                                                                                        
    else                                                                                                       
    begin                                                                                                      
    -- perform calculation                                                                                     
        select @K = 1.0 / (1.0 + 0.2316419 * @L)                                                               
        select @dCND = 1.0 - 1.0 / Sqrt(2 * @pi) * Exp(-@L * @L / 2.0) *                                       
            (@a1 * @K + @a2 * @K * @K + @a3 * POWER(@K, 3.0) + @a4 * POWER(@K, 4.0) + @a5 * POWER (@K, 5.0))   
                                                                                                               
        if (@p < 0) begin                                                                                      
            select @n_result = 1.0 - @dCND                                                                     
                                                                                               
        end else begin                                                                                         
            select @n_result = @dCND                                                                           
                                                                                              
           end                                                                                                 
 end              

return @n_result

end


--标准正态分布反函数
    CREATE  function [dbo].[norminv]  (@p decimal(28,18))
returns decimal(28,18)
as 
begin 
                                                                                            
declare @a1 decimal(28,18)                                                                                                                                                
declare @a2 decimal(28,18)                                                                                                                                                 
declare @a3 decimal(28,18)                                                                                                                                                 
declare @a4 decimal(28,18)                                                                                                                                                 
declare @a5 decimal(28,18)                                                                                                                                                 
declare @a6 decimal(28,18)                                                                                                                                                 
declare @b1 decimal(28,18)                                                                                                                                                 
declare @b2 decimal(28,18)                                                                                                                                                 
declare @b3 decimal(28,18)                                                                                                                                                
declare @b4 decimal(28,18)                                                                                                                                                
declare @b5 decimal(28,18)                                                                                                                                                 
declare @c1 decimal(28,18)                                                                                                                                                 
declare @c2 decimal(28,18)                                                                                                                                                 
declare @c3 decimal(28,18)                                                                                                                                                 
declare @c4 decimal(28,18)                                                                                                                                                 
declare @c5 decimal(28,18)                                                                                                                                                 
declare @c6 decimal(28,18)                                                                                                                                                 
declare @d1 decimal(28,18)                                                                                                                                                 
declare @d2 decimal(28,18)                                                                                                                                                 
declare @d3 decimal(28,18)                                                                                                                                                
declare @d4 decimal(28,18)                                                                                                                                                 
declare @plow decimal(28,18)                                                                                                                                               
declare @phigh decimal(28,18)                                                                                                                                              
declare @q decimal(28,18)                                                                                                                                                  
declare @r decimal(28,18)                                                                                                                                                  
declare @g_result decimal(28,18)                                                                                                                                                     
                                                                                                                                                            
                                                                                                                                                               
SET @a1 = -39.6968302866538                                                                                                                                     
SET @a2 = 220.946098424521                                                                                                                                      
SET @a3 = -275.928510446969                                                                                                                                     
SET @a4 = 138.357751867269                                                                                                                                      
SET @a5 = -30.6647980661472                                                                                                                                     
SET @a6 = 2.50662827745924                                                                                                                                      
SET @b1 = -54.4760987982241                                                                                                                                     
SET @b2 = 161.585836858041                                                                                                                                      
SET @b3 = -155.698979859887                                                                                                                                     
SET @b4 = 66.8013118877197                                                                                                                                      
SET @b5 = -13.2806815528857                                                                                                                                     
SET @c1 = -7.78489400243029E-03                                                                                                                                 
SET @c2 = -0.322396458041136                                                                                                                                    
SET @c3 = -2.40075827716184                                                                                                                                     
SET @c4 = -2.54973253934373                                                                                                                                     
SET @c5 = 4.37466414146497                                                                                                                                      
SET @c6 = 2.93816398269878                                                                                                                                      
SET @d1 = 7.78469570904146E-03                                                                                                                                  
SET @d2 = 0.32246712907004                                                                                                                                      
SET @d3 = 2.445134137143                                                                                                                                        
SET @d4 = 3.75440866190742                                                                                                                                      
SET @plow=0.02425                                                                                                                                               
SET @phigh=1-@plow                                                                                                                                              
                                                                                                                                                                  
if (@p<@plow)                                                                                                                                                     
begin                                                                                                                                                             
select @q = Sqrt(-2 * Log(@p))                                                                                                                                  
select @g_result=(((((@c1 * @q + @c2) * @q + @c3) * @q + @c4) * @q + @c5) * @q + @c6) / ((((@d1 * @q + @d2) * @q + @d3) * @q + @d4) * @q + 1)                   
                                                                                                                                                
end                                                                                                                                                               
else begin                                                                                                                                                        
if (@p<@phigh)                                                                                                                                                    
begin                                                                                                                                                             
select @q =@p - 0.5                                                                                                                                             
select @r = @q * @q                                                                                                                                             
select @g_result= (((((@a1 * @r + @a2) * @r + @a3) * @r + @a4) * @r + @a5) * @r + @a6) * @q / (((((@b1 * @r + @b2) * @r + @b3) * @r + @b4) * @r + @b5) * @r + 1)
                                                                                                                                               
end                                                                                                                                                               
else begin                                                                                                                                                        
select @q = Sqrt(-2 * Log(1 - @p))                                                                                                                              
select @g_result= -(((((@c1 * @q + @c2) * @q + @c3) * @q + @c4) * @q + @c5) * @q + @c6) / ((((@d1 * @q + @d2) * @q + @d3) * @q + @d4) * @q + 1)                 
                                                                                                                                                
end                                                                                                                                                             
end


return @g_result
end                                                                                                                         
                                                                                                                                    

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正太分布函数和反函数 标量值函数 (借鉴) 的相关文章

  • VNC连接失败:The connection was refused by the host computer

    解决方法 xff1a 1 用Xshell登陆自己的服务器 2 在命令行中输入vncserver 命令行中出现 xff1a Warning optimal6 2 is taken because of tmp X2 lock Remove t
  • 业务层 、服务层、数据层、表现层

    一般说来 xff0c 业务逻辑层中的模块包含了系统所需要的所有功能上的算法和计算过程 xff0c 并与数据访问层和表现层交互 抽象的说 xff0c 业务逻辑层就是处理与业务相关的部分 xff0c 一般来说 xff0c 业务层包含一系列的执行
  • 计算机视觉:传统图像处理方法

    1 图像分割 经典的数字图像分割算法一般是基于灰度值的两个基本特征之一 xff1a 不连续性和相似性 xff08 1 xff09 基于阈值 xff1a 基于图像的灰度特征来计算一个或多个灰度阈值 xff0c 并将图像中每个像素的灰度值与阈值
  • 基于UGUI实现类似Excel表格功能

    曾经有一个类似这种需求 xff0c 想在Unity中实现类似Excel表中的一个功能 xff0c 能在Scene窗口中 新增行 可视化配置 所见所得 单元格合并 等功能 经过我对UGUI的一些深层次了解以及结合Editor编辑器窗口开发 x
  • 电子货架标签应用浅析(ESL)

    关注与分享 xff0c 是对原创最大的鼓励 年底了 xff0c 会断续介绍几个主要的BLE的应用及市场情况 xff0c 这篇文章介绍的是电子货架标签 xff0c ESL Electronic Shelf Label 文章将从应用简介 xff
  • 最详细UWB技术及特点介绍

    关注与分享 xff0c 是对原创最大的鼓励 这篇文章偏技术 xff0c 信息偏深 xff0c 建议大家可以先跳到感兴趣的章节阅读 xff1b 01 UWB简介 UWB是Ultra Wide Band缩写 xff0c 来源于很久之前的脉冲通信
  • 浅聊Matter协议 (原CHIP协议)

    聚焦 xff1a 芯产品 xff0c 芯市场 xff0c 芯资讯 因为Matter协议目前还没有发布 xff0c 标准只针对部分协会成员开放 xff1b 很多朋友可能听过这个名字 xff0c 然后知道是一个 上层 协议 xff0c 更多内容
  • 2021 MCU WiFi竞争新格局,国产MCU WiFi芯片盘点,附录2020/2021 MCU WiFi排行

    关注智联网事 iotthings xff1a 芯产品 xff0c 芯市场 xff0c 芯资讯 缺货 xff0c 是半导体产业2021年最主要的基调 xff0c 有公司拿不到产能 xff0c 有公司新芯片流片周期大幅拉长 xff1b 新冠病情
  • 芯科(Silabs) Matter 全栈解决方案,附录高质量Matter培训资

    关注智联网事 xff1a 芯产品 xff0c 芯市场 xff0c 芯资讯 对芯科的最初印象 xff0c 最早应该是2014 5年左右 xff0c 当时SI44xx系列渗透了很多市场的客户 xff0c 记得一个是低功耗的特性 xff0c 一个
  • WAF技术选型介绍

    WAF目前是企业必不可少的安全设备 xff0c 目前常见的开源技术选型包括 xff1a jxwafopenstarngx lua wafApache APISIXmodsecurity 介绍参考 xff1a https zhuanlan z
  • int 占多少字节

    char 1 int 4 long 8 float 4 double 8 xff08 1 xff09 使用VC xff0c int类型占4个字节 xff08 2 xff09 使用Turbo C xff0c int类型占2个字节 16位编译器
  • 海外LPWAN的王者是我,一文看懂Wi-Sun协议

    聚焦 xff1a 芯产品 xff0c 芯市场 xff0c 芯技术 注 xff1a 欢迎加入文章底部的 lt 物联坊间 gt 微信 刚刚毕业的我 xff0c 有参与城市照明系统的建设 xff0c 包括城市公交系统 xff0c 那个时候困扰我的
  • 22家国产汽车MCU公司及型号盘点

    专注芯片 xff0c 应用系统 xff0c 行销技能的公众号 如果有一家芯片MCU或模拟公司和你说 xff0c 他不做汽车方向芯片 xff0c 你可以内心欣喜的 xff0c 严肃的问一句 xff0c 为什么 xff1b 做汽车芯片 xff0
  • 2022 MCU公司交卷,总营收84.8亿人民币,排名第一和最后的分别是

    2022财报季结束 xff0c 我们看下上市MCU公司的最新排名 xff0c 毛利 xff0c 库存及库存周转率情况 xff1b 根据 Omdia 的数据 xff0c 2022 年中国 MCU 市场规模约为 82 亿美元 xff0c 小二统
  • 深度:旋转变压器原理,芯片,算法,选型

    之前介绍的新能源汽车电机控制器 MCU 和电动助力转向 EPS 文章中 xff0c 有提到电机的角度反馈可选择转旋转变压器方案 xff0c 今天做个分享 xff0c 欢迎留言交流 本文目录 xff1a 旋转变压器应用及参数概览 旋转变压器原
  • 实时微控制器的关键技术及国产玩家,国产DSP盘点

    小二用芯在写 xff0c 如果您觉得有帮助 xff0c 帮忙朋友圈推荐下 34 xff0c 感谢 xff01 在介绍OBC xff0c DCDC时候 xff0c 觉得有必要对主控芯片做个介绍 xff0c 比如为什么说数字电源的控制一般集成H
  • 天猫精灵的开发者生态

    文章转自 智联网事 欢迎关注 xff0c 每周一篇原创 xff0c 直至 No End https mp weixin qq com s biz 61 MzI3NDE2NDMwNQ 61 61 amp mid 61 2649905740 a
  • 蓝牙Mesh网络性能及网络特点总结(一)

    原文链接 xff1a 欢迎关注公众号 智联网事 xff0c 一周一篇原创文章 xff0c 一起探讨智联网 https mp weixin qq com s biz 61 MzI3NDE2NDMwNQ 61 61 amp mid 61 264
  • 华为物联网(IOT)开发者平台

    智联网事 关注与分享 xff0c 是对原创最大的鼓励 原文链接 https mp weixin qq com s biz 61 MzI3NDE2NDMwNQ 61 61 amp mid 61 2649905835 amp idx 61 1

随机推荐