如何写一个,随机生成一个18位的身份证号码
我想写一个随机生成一个18位的身份证号码,在游戏时,可以任意复制填 写资料。 怎么随意,身份是有规范的比如如果一个号码是xxxxxx1800xxxxxxxxx可以肯定是不存在的 很简单的,百度下身份证的构成就可以~~ 好像身份证的最后一位是校验位 本帖最后由 xms77 于 2013-1-19 19:57 编辑
好像身份证的最后一位是校验位
网速不给力啊,一不小心就重复发帖了{:face (229):} ABCDEF12345678abcX
ABCDEF-地区代码
12345678-出生日期
abc-随机数
X-男为偶数,女为奇数
仅供参考... X,网上一随手一搜大把的身份证号生成器... 谢谢提供, 回复 6# 邪恶海盗
我最后一位是x,到底是奇数还是偶数。本人是男性! 回复 9# xms77
怪物 回复 10# netegg
原来是x表示10,就像有些钟面上的X,XI,XII
校验码 (身份证最后一位)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。身份证第18位(校验码)的计算方法 1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 2、将这17位数字和系数相乘的结果相加。 3、用加出来和除以11,看余数是多少? 4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2 。 5、通过上面得知如果余数是2,身份证的最后一位号码就是罗马数字X。如果余数是10,就会在身份证的第18位数字上出现的是2。 回复 9# xms77
难道你的身份证最后一位是奇数? 回复 11# xms77
坑爹的吧?
记得以前部分地区是17位的身份证号,升级18时就在后加加上一位X/Y,哪个是男哪个是女我忘记了,反正以前我家老头子最身份证最后一位就是字母,貌似换二代证又改成数字了... Func MAKECHECKCODE($iD);根据17位身份证生成第18位校验码
If StringLen($id) <> 17 Then Return -1
Local $W1,$code,$A,$sum = 0,$y,$checkcode
$W1=StringSplit("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2",",")
$code=StringSplit("1,0,x,9,8,7,6,5,4,3,2",",")
For $I = 1 to StringLen($id)
$A[$I] = StringMid($id,$I,1)
$SUM = $sum + $A[$I] * $w1[$I]
Next
$y = Mod ($sum,11)
$checkcode = $code[$y + 1]
Return $checkcode
EndFunc $areastr = "130230";;地区代码
if stringlen($areastr) <> 6 then Exit ;;地区代码不为六位则ContinueLoop
$mon = Random(1,12,1) ;取随机月
IF $MON = 2 THEN ;;如果随机月为二月,则随机日最大取28,否则最大30
$YNTWO = 28
ELSE
$YNTWO = 30
ENDIF
IF STRINGLEN($mon) = 1 THEN $mon = "0" & $mon ;;如果随机月为一位字符则前面补零
$day = Random(1,$ynTWO,1) ;;;取随机日
IF STRINGLEN($day) = 1 THEN $day = "0" & $day
$SERIAL = Random(01,99,1);;取随机顺序码
IF STRINGLEN($SERIAL) = 1 THEN$SERIAL = "0" & $SERIAL
$GERDER = RANdom(1,9,1);;取随机性别
$BODY =$areastr & Random(1970,1987,1) & $mon & $day & $SERIAL & $GERDER ;身份证前十七位本体码
MsgBox(0,"身份证",$BODY & MAKECHECKCODE($BODY) )
;;;本函数为身份证号码校验码生成函数
;;;调用方式MAKECHECKCODE($ID),$ID为身份证号码前十七位,失败返回-1,成功则返回校验码
FUNC MAKECHECKCODE($iD)
IF STRINGLEN($id) <> 17 THEN RETURN -1
LOCAL $W1,$code,$A,$sum = 0,$y,$checkcode
$W1 = 7
$W1 = 9
$W1 = 10
$W1 = 5
$W1 = 8
$W1 = 4
$W1 = 2
$W1 = 1
$W1 = 6
$W1 = 3
$W1 = 7
$W1 = 9
$W1 = 10
$W1 = 5
$W1 = 8
$W1 = 4
$W1 = 2
$code = 1
$code = 0
$code = "x"
$code = 9
$code = 8
$code = 7
$code = 5
$code = 5
$code = 4
$code = 3
$code = 2
for $I = 1 to stringlen($id)
$A[$I] = STRINGMID($id,$I,1)
$SUM = $sum + $A[$I] * $w1[$I]
NEXT
$y = MOD ($sum,11)
$checkcode = $code[$y + 1]
return $checkcode
ENDFUNC
页:
[1]
2