数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 7336|回复: 5

成功率的可靠性指标如何计算?

[复制链接]
发表于 2017-5-4 18:49 | 显示全部楼层 |阅读模式
A 有10个样本,其中6个成功,成功率60%
B 有100个样本,其中60个成功,成功率60%
C 有1000个样本,其中500个成功,成功率50%
D 有1000个样本,其中600个成功,成功率60%

这三种情况下,显然C的可靠性最高,因为样本最多,同时成功率最高,那么如何通过样本数量和成功率形成一个计算公式,计算每种情况的可靠性指标。
比如 :
p = num_success /num_all  //成功率
r =(num_all)^0.1*(p)^3    //可靠性指标
这个公式计算不够合理,仅供参考。
哪位大侠能帮给个好思路。
可能比较理想的方式为:样本每提高一个数量级,其可靠性指标数提高一个数量,比如:
B的可靠性指标,应该介于C和D的可靠性指标之间。
发表于 2017-5-4 19:59 | 显示全部楼层
本帖最后由 天山草 于 2017-5-4 20:03 编辑

产品成败型检验的可靠度定义:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2017-5-4 20:22 | 显示全部楼层
上述标准适合产品价值不高,批量大,抽样较多的情况。
发表于 2017-5-5 09:48 | 显示全部楼层
数学中的可靠性理论是非常难弄懂的东西。要先从概率、统计学起,相当费劲。
 楼主| 发表于 2017-5-5 13:48 | 显示全部楼层
感谢,天山草。正在消化中。
发表于 2017-5-7 22:00 | 显示全部楼层
《火工品可靠性评估方法》GJB376-87 当中大部分篇幅是数据表格。大约十年前,我用 VB 写了一个计算程序,不需要查表,在已知生产批量,抽样数量, 试验(检验)失效(失败)数,以及置信度这些条件后,用此程序可以瞬间算出该批产品的可靠度。
例1: 批量500, 抽25, 失效0, 置信度0.95时,该批产品的可靠度是 R=0.889808
例2: 批量500, 抽25, 失效0, 置信度0.85时,该批产品的可靠度是 R=0.928693
例3: 批量500, 抽50, 失效1, 置信度0.95时,该批产品的可靠度是 R=0.912149

以下是原程序——

' 成败型试验可靠度准确计算  计算依据:《火工品可靠性评估方法》GJB376-87
   Private Sub Form_Click()
      Open "批量500,抽50,失效1,置信度0.95.txt" For Output As 1   'R=0.912149
     nn = 500      '批量
     n = 50        '抽样数
     F = 1         '失效数
     D = 0.95      '置信度
     
     
     R1 = 0: R2 = 1     '根在这个范围
     pi = 3.1415926535: e = 2.718281828459
     Dim h(50)
     Dim B(50)
     B(2) = 1 / 6: B(4) = -1 / 30: B(6) = 1 / 42: B(8) = -1 / 30: B(10) = 5 / 66
     B(12) = -691 / 2730: B(14) = 7 / 6: B(16) = -3617 / 510: B(18) = 43867 / 798
     B(20) = -174611 / 330: B(22) = 854513 / 138: B(24) = -236364091 / 2730
     B(26) = 8553103 / 6: B(28) = -23749461029# / 870: B(30) = 8615841276005# / 14322
     B(32) = -7709321041217# / 510: B(34) = 2577687858367# / 6
     B(36) = -2.63152715530535E+19 / 1919190: B(38) = 2.92999391384156E+15 / 6
     B(40) = -2.61082718496449E+20 / 13530: B(42) = 1.52009764391807E+21 / 1806
     B(44) = -2.7833269579301E+22 / 690: B(46) = 5.96451111593912E+23 / 282
     B(48) = -5.60940336899782E+27 / 46410: B(50) = 4.9505720524108E+26 / 66
     
     GoTo 10
20:  If y < 0 Then R1 = R: GoTo 10
     If y > 0 Then R2 = R: GoTo 10
     
10:  k = k + 1
     R = (R1 + R2) / 2
     
     If nn > 100 Then GoTo 40
   
     
     x = nn * R: If x < 10 Then GoSub sub1: a1 = aaa      'a1 = (NR)!
     x = nn * R: If x >= 10 Then GoSub sub2: a1 = aaa
     
     x = nn * R - n: If x < 10 Then GoSub sub1: a2 = aaa  'a2 = (NR-n)!
     x = nn * R - n: If x >= 10 Then GoSub sub2: a2 = aaa
         
     a3 = 1                                               'a3 = (N)!/(N-n)!
     For i = nn - n + 1 To nn
     a3 = a3 * i
     Next i
     
     GoSub sub4
         
     y = a1 / a2 / a3 * z - (1 - D)
            
     GoTo 50
     
40:  x = nn * R: GoSub sub3: L1 = LLL        'L1 = Log(NR)!
     x = nn - n: GoSub sub3: L2 = LLL        'L2 = Log(N-n)!
     x = nn: GoSub sub3: L3 = LLL            'L3 = Log(N)!
     x = nn * R - n: GoSub sub3: L4 = LLL    'L4 = Log(NR-n)!
     GoSub sub4
     
     y = L1 + L2 - L3 - L4 + Log(z) - Log(1 - D)
     
50: If k / 2 = Int(k / 2) And k <= 50 Then
           Print Tab(2); "k = "; k;: Print #1, Tab(2); "k = "; k;
         If y >= 0 Then
           Print Tab(12); "y="; Format(y, " ##0.000000000000000")
           Print #1, Tab(12); "y="; Format(y, " ##0.000000000000000")
           Else
           Print Tab(12); "y="; Format(y, "###0.000000000000000")
           Print #1, Tab(12); "y="; Format(y, "###0.000000000000000")
         End If
     End If
     
     If k < 40 Then GoTo 20
     If k >= 40 Then GoTo 30
               
30:  Print: Print #1,
     Print Tab(12); "R = "; Format(R, "0.000000")
     Print #1, Tab(12); "R = "; Format(R, "0.000000")
     Print Tab(12); "y = "; Format(y, "0.00000000000000")
     Print #1, Tab(12); "y = "; Format(y, "0.00000000000000")
     
999: Close
     Exit Sub
     End
     
sub1:  '广义阶乘子程序
    nnn = 1000000
    aaa = 1
    For i = 1 To nnn
    If x + i = 0 Then x = -i + 0.00001
    aaa = aaa * i / (x + i)
    Next i
    aaa = aaa * nnn ^ x
    Return
        
sub2: '用斯特林公式计算广义阶乘 x!
    c1 = (1 + 1 / (12 * x) + 1 / (288 * x ^ 2))
    c1 = c1 - 139 / (51840 * x ^ 3) - 571 / (2488320 * x ^ 4) + 163879 / (209018880 * x ^ 5)
    aaa = Sqr(2 * pi * x) * (x / e) ^ x * c1
    Return
   
sub3: '用斯特林公式计算广义阶乘的对数
    If x <= 20 Then GoSub sub1: LLL = Log(aaa): Return
     c1 = 0
    For kv = 1 To 15 '25
     c = B(2 * kv) / (2 * kv) / (2 * kv - 1) / (x ^ (2 * kv - 1))
     c1 = c1 + c
    Next kv
   
    LLL = (x + 0.5) * Log(x) - x + Log(Sqr(2 * pi)) + c1
    Return
   
sub4:     '求系数 Z
     h(0) = 1
     For i = 1 To F
       h(i) = h(i - 1) * (n - i + 1) * (nn - nn * R - i + 1) / i / (nn * R - n + i)
     Next i
     
     z = 0
     For i = 0 To F
        z = z + h(i)
     Next i
    Return
   
    End Sub
   
     

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2026-5-16 16:49 , Processed in 0.153601 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表