zoukankan      html  css  js  c++  java
  • 加权相关-身份证验证码

    统计学认为,在统计中计算平均数等指标时,对各个变量值具有权衡轻重作用的数值就称为权数.

        还是举个例子吧,求下列数串的平均数

        3、4、3、3、3、2、4、4、3、3、

        一般求法为(3+4+3+3+3+2+4+4+3+3)/10=3.2

        加权求法为(6*3+3*4+2)/10=3.2 

      其中3出现6次,4出现3次,2出现1次.6、3、1就叫权数。这种方法叫加权法。

     
      一般说的平均数,就是把所有的数加起来,再除以这些数的总个数。表示为:

        (p1+p2+p3+.....+pn)/n;

        但有的数据记录中有一些相同的数据,在计算的时候,那一个数有几个相同数,就把这个数乘上几,这个几,就叫权,加权,就是乘上几后再加。平均数还是要除以总个数。

        还是以上面的各个数为例:

        它们每个数都有一些相同数,表示为:k1,k2,k3.......kn;

        加权平均的公式是:(k1p1+k2p2+k3p3+......knpn)/(k1+k2+k3+.....kn)

    进而扩展:中华人民共和国身份证验证规则

              公民身份证号码是特真组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址,八位数字出生日期玛,三位数字顺序码和一位数字校验码。

              关于校验码:

    (1)十七位数字本体码加权求和公式

           S = Ai * Wi, i = 2, ... , 18

           Y = mod(S, 11)

           i: 表示号码字符从右至左包括校验码字符在内的位置序号

           Ai:表示第i位置上的身份证号码字符值

           Wi:表示第i位置上的加权因子

           i:      18    17    16     15    14    13    12    11    10    9     8     7     6     5    4    3    2    1

           Wi:    7      9     10      5      8      4      2      1      6     3     7     9    10    5    8    4    2    1

    (2)Y值对应的校验码字符值:

           Y:            0    1    2    3    4    5    6    7    8    9    10

           校验码: 1     0    X    9    8    7    6    5    4    3     2

    试算一个:身份证号是14010519590215222a1

    i:      18    17    16     15    14    13    12    11    10    9     8     7     6     5    4    3    2    1

    Ai:     1      4      0       1       0     5       1     9      5     9     0     2     1     5    2    2    2    a1

    Wi:    7      9     10      5      8      4      2      1      6     3     7     9    10    5    8    4    2    1

    根据公式 S = Ai * Wi=7+36+0+5+0+20+2+9+30+27+0+18+10+25+16+8+4=217

    217/11=19+8/11

    Y = mod(S, 11)=mod(217,11)=8

    所以,检验码为4,该人的身份证号为140105195902152224

  • 相关阅读:
    c++ 指定目录下的文件遍历
    c++ 实现键盘钩子
    c++ 用模板类实现顺序储存的线性表
    c++ 递归算法实现排列组合
    matlab 基础知识
    QT 给工程添加图片
    QT5.9 QString和字符串转换的乱码问题
    【内核】——进程3,内核同步
    Java多线程——Thread的native底层实现
    【内核】——文件和文件系统的内部结构4 系统调用的实现
  • 原文地址:https://www.cnblogs.com/Spacecup/p/3785431.html
Copyright © 2011-2022 走看看