随机生成身份证号码

   //程序入口   public static void main ( String[] args )
   {
        Test t = new Test();
        for (int i = 0; i < 100; i++)//随机生成100个身份证号码
        {
            System.out.println(t.getRandomID();     }   }
/**
     * 获取随机生成的身份证号码
     *
     * @author mingzijian
     * @return
     */
    public String getRandomID() {
        String id = "420222199204179999";
        // 随机生成省、自治区、直辖市代码 1-2
        String provinces[] = { "11", "12", "13", "14", "15", "21", "22", "23",
                "31", "32", "33", "34", "35", "36", "37", "41", "42", "43",
                "44", "45", "46", "50", "51", "52", "53", "54", "61", "62",
                "63", "64", "65", "71", "81", "82" };
        String province = randomOne(provinces);
        // 随机生成地级市、盟、自治州代码 3-4
        String city = randomCityCode(18);
        // 随机生成县、县级市、区代码 5-6
        String county = randomCityCode(28);
        // 随机生成出生年月 7-14
        String birth = randomBirth(20, 40);
        // 随机生成顺序号 15-17(随机性)
        Random rd=new Random();
        String no = rd.nextInt(10)+""+rd.nextInt(10)+""+rd.nextInt(10);
        // 随机生成校验码 18
        String checks[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9","X" };
        String check = randomOne(checks);
        // 拼接身份证号码
        id = province + city + county + birth + no + check;
        return id;
    }  

    /**
     * 从String[] 数组中随机取出其中一个String字符串
     *  new Random().nextInt(10)————>>区间是:[0,10),包含0但不包含10
     * @author mingzijian
     * @param s
     * @return
     */
    public String randomOne(String s[]) {
        return s[new Random().nextInt(s.length)];
    }  

    /**
     * 随机生成两位数的字符串(01-max),不足两位的前面补0
     *
     * @author mingzijian
     * @param max
     * @return
     */
    public String randomCityCode(int max) {
        int i = new Random().nextInt(max) + 1;
        return i > 9 ? i + "" : "0" + i;
    }  

    /**
     * 随机生成minAge到maxAge年龄段的人的生日日期
     *
     * @author mingzijian
     * @param minAge
     * @param maxAge
     * @return
     */
    public String randomBirth(int minAge, int maxAge) {
        SimpleDateFormat dft = new SimpleDateFormat("yyyyMMdd");// 设置日期格式
        Calendar date = Calendar.getInstance();
        date.setTime(new Date());// 设置当前日期
        // 随机设置日期为前maxAge年至前minAge年的任意一天
        int randomDay = 365 * minAge  + new Random().nextInt(365 * (maxAge - minAge));
        date.set(Calendar.DATE, date.get(Calendar.DATE) - randomDay);
        return dft.format(date.getTime());
    }  
时间: 2024-10-07 21:46:32

随机生成身份证号码的相关文章

Java 批量随机生成身份证号码

package org.service.task.fees; import java.util.Calendar; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * * 身份证算法实现 * * 1.号码的结构 公民身份号码是特征组合码, 由十七位数字本体码和一位校验码组成. 排列顺序从左至右依次为:六位数字地址码,八位数字出生日

随机生成身份证

import org.junit.Test; import java.util.*; /** * @author IdCardGeneration * @Title: IdCardGeneration * @ProjectName IdCardGeneration * @Description: TODO * @date 2018/8/2821:52 */ public class IdCardGeneration { public static final Map<String, Intege

试探算法_随机生成彩票号码

先给出一般的解决“随机生成7位1—29号数的彩票号码”问题的代码: 1 #include<stdio.h> 2 int main() 3 { 4 int j,i[7];//定义数组保存随机生成不同的7位数字 5 for(i[0]=1;i[0]<=29;i[0]++)//在1——29中随机生成不同的数字 6 for(i[1]=1;i[1]<=29;i[1]++) 7 { 8 if(i[1]==i[0]) continue; 9 for(i[2]=1;i[2]<=29;i[2]+

php 生成身份证号码

<?php /* @FileName:id.php @Des:身份证随机产生,身份证校验 @Aurthor: OneDou [http://oneodu.com] @LastModifed:2013-1-23 下午3:55:44 @Charset:UTF-8 */ $content = ''; //产生身份证的数量 $total_ids_showed = 1000; //身份证起止年月 eg:1990年12月31日 mktime(0,0,0,12,31,1990) $Year_start = m

随机生成双色球号码和商品管理python程序

1.写一个程序,输入N就产生N条双色球号码 红球 6 01-33 蓝球 1 01-16 产生的双色球号码不能重复,写到一个文件里面,每一行是一条 红球: 01 03 05 07 08 18 蓝球:16 红球需要排序,是升序 2.写一个商品管理的程序: 1.添加商品 商品名称:商品已经存在的话,要提示 商品价格: 校验,是大于0的数字 商品数量:校验,只能是大于0的整数 2.删除商品 商品名称:商品不存在的话,要提示 3.查看商品 显示所有的商品信息 4.退出 def add_product():

随机生成双色球号码

package com.lovo.homework; public class NumberGenerator { private int[] redBalls = new int[6]; private int blueBall; public void run(){ for(int i = 0; i < 3; i++){ this.generateRedBall(); this.generateBlueBall(); this.showResult(); } } private void g

身份证号码生成与校验

在测试过程中难免会遇到需要身份证号码的情况,记录下随机生成身份证号码与如何检验身份证号码的方法. 首先要了解身份证号码的组成方式: 号码结构:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 地址码(前六位数):表示编码对象常住户口所在县(市.旗.区)的行政区划代码,按GB/T2260的规定执行. 出生日期码(第七位至十四位):表示编码对象出生的年.月.日,按GB/T7408的规定执行,年.

python操作redis之随机生成18位身份证号码

写一个随机生成身份证号的程序,输入多少条就产生多少个,?把产生完的数据写到redis里面,key用哈希类型?Xiaohei 410881198312031241 其中配置文件confsetting.py里的常量有: # 系统常量,包含: # LAST_NAME: 姓 # FIRST_NAME: 名 # STATE_CODE:全国大陆地区及编码 REDIS_IP = '172.16.2.163' RedisIp REDIS_PORT = 6379 REDIS_PASSWD = '222333' R

Python 随机生成有效手机号码及身份证

中国那么大,人那么多,几乎人手一部手机.手机号码已经作为各大互联网站的注册账户.同样,身份证更是如此.以下是生成有效手机号码和身份证号. BASE_DIR = os.path.dirname(os.path.dirname(__file__)) DC_PATH = BASE_DIR + "districtcode.txt" # 随机生成手机号码 def createPhone(): prelist=["130","131","132&q