午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

科普:身份證號為什么不會重復?

 空谷天籟 2024-10-17

(給算法愛好者加星標,修煉編程內功

來源:TingRongGao(本文來自作者投稿)

中國目前已經超過十三億人,一個巨大的數(shù)字,在如此龐大的人群下,政府是如何有序管理的呢?眾所周知,每個人都有一個唯一標識的身份證號,你是否想過會不會有一個人和你有相同的身份證號呢?思考一下是如何做到不重復的呢?

Image

身份證號里的小知識

先來看看身份證號內包含了哪些元素。

  1. 按地域劃分。每個人出生都有一個出生地,某個省市,某個區(qū)縣,總會有一個地點,一塊空間,具體到身份證號里,前幾位所代表的正是每個人所在的空間。

  2. 按時間劃分。每個人都有生日,生日代表著什么?如何把時間看做一條長河,那么你的生日就是上岸的那一刻岸的位置,可能這個位置這一刻有很多人上岸,但對于你個人只有一個位置,毋庸置疑。在身份證號里中間幾位年月日就是這個時間點的體現(xiàn)。

  3. 有序數(shù)字。就如你去吃飯等座,你會先領取一個號,從1到100,依次有序的加一,你所領取的這個號,在你吃飯之前肯定是唯一的,身份證號后幾位即可與此類比。

我曾經思考過如果中國要出現(xiàn)一個和我有一樣的身份證號到底有多大的可能,算了一下后幾乎是不可能的。因為每個人的身份證號前幾位因為自己的地域不同而各不相同,中間幾位生日不同也不相同,那如果要兩個人身份證號要相同需要具備什么樣的條件呢?

身份證號碼的規(guī)則

在身份證號中,在前六位中第一到第二位確定省級市,第三至第四確定地級市,第五至第六確定縣級市。

對于中間八位的規(guī)則:用戶的出生年月日,如你是1994年1月22日出生的,中間八位為19940122。

第十五至十六位為0-9之間的順序碼,00-99之間的數(shù)字。

第十七位代表性別,奇數(shù)為男,偶數(shù)為女。

第十八位為0-10(10用羅馬數(shù)字X代替)的校驗碼,而且這里的校驗碼并非隨機產生,而是由前十七位來決定的,他的計算公式如下:

Image

身份證號里校驗碼的意義

校驗碼的存在就是檢查當前身份證號是否正確,下面是一個檢查身份證號的正確性的函數(shù),有興趣的試試自己的身份證號。

// 左移 a << b 將 a 的二進制形式向左移 b (< 32) 比特位,右邊用0填充。function checkId(id) { if (typeof id === 'number') return '請輸入字符串類型的身份證號'; if(id.length !== 18) return '請輸入正確的身份證號'; let sum = 0; for(let i=0; i<17; i++) { sum += ((1 << (17 - i)) % 11) * id[i]; } const n = (12 - (sum % 11)) % 11; return n === Number(id[17]) || id[17] === 'X';}

算算身份證號重復的概率

如果要兩個人身份證號相同,首先要保證兩個人在同一個地區(qū)保證身份證號前六位相同,接下來需要有相同的生日,保證中間八位相同 ,還剩下最后四位,而最后一位校驗碼的出現(xiàn)是取決于前17位的,所以只有第十五到十七位三個數(shù)字是可變化的,那能承載多少人呢?

第十五位和十六位為隨機數(shù),均可出現(xiàn)10中可能,第十七位由于性別奇偶之分,只有5中可能,所以可得出下面的算式。

男性:10 * 10 * 5  = 500

女性:10 * 10 * 5  = 500

我是男性,從上面可以看出來,如果在我所出生的區(qū)(身份證前六位精確到區(qū)縣)并且在我出生的那一天有501個男孩出生,如果保證身份證位數(shù)恒定18位不增加且只允許數(shù)字情況下,肯定有兩個人要撞身份證號,所以與我撞身份證號的可能性即為五百分之一。

現(xiàn)實數(shù)據(jù)統(tǒng)計

Image

我查了一些資料,中國2018年全年出生人口1523萬人,2017年出生人口約為1723萬,2016年約為1786萬,這里就當做每年出生人口為1700萬,中國一共有超過2800多個縣區(qū),那我們來算一算大概一個區(qū)縣每天平均有多少人出生呢?

17000000/365/2800 = 16.63

平均每天每個區(qū)縣有17個新生兒,有一些人口密集的地方超平均數(shù)10倍或者20倍,也可看出來也離500個差距甚遠,所以可得出結論基本沒有可能兩個人身份證號會相同,如果人口真到非常龐大的時候 ,身份證號也會相應增加位數(shù)或者引入英文字母來規(guī)避號碼相同的問題。

中心化機構

這里從上面身份證號關于重復的計算可以看出,先有了戶籍管理部門來制定好一些規(guī)則,然后地方的實施者(派出所)再按照規(guī)則去生成每個人的身份證號,在這里拋出了最關鍵的一個點,中心化的戶籍部門。

在計算機世界里,我們都知道每個能訪問到的服務器都有一個唯一標識IP地址,你能通過IP地址準確找到你的服務器,是怎么實現(xiàn)的呢?其實與身份證號生成流程是一致的,都是要有一個中心化的機構去做分發(fā)地址這件事,這個計算機世界里這個中心化機構就是因特網(wǎng)信息中心。

為什么真有人身份證號相同?

其實生活中確實存在著身份證號相同的問題,在互聯(lián)網(wǎng)還不是非常普及的時候,各地的派出所沒有聯(lián)網(wǎng)條件,也沒辦法查該身份證號是否存在,都是靠人來記錄的,所以會導致極少一部分人員出現(xiàn)身份證號重復的問題。

Image

這也說明中心機構的可靠性是保證身份證號唯一性的重要原因。

思考

最后思考一下,如果沒有中心化機構了,我們又該怎么做類似身份證號的唯一標識呢?請看下一篇,無中心化機構,計算機世界的唯一標識是如何生成之UUID?

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多