编辑代码

import random
import csv

# 身份证前6位真实行政区代码(示例)
regions = [110101, 310104, 440304, 500105]  # 建议导入完整地区码库

def calc_check(code17):
    weights = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
    return "10X98765432"[sum(int(c)*w for c,w in zip(code17,weights))%11]

ids = set()
while len(ids) < 20000:
    region = random.choice(regions)
    birth = f"{random.randint(1950,2023)}{random.randint(1,12):02}{random.randint(1,28):02}"
    seq = f"{random.randint(0,999):03}"
    code17 = f"{region}{birth}{seq}"
    ids.add(f"{code17}{calc_check(code17)}")

with open('virtual_ids.csv','w',newline='') as f:
    writer = csv.writer(f)
    writer.writerows([[id] for id in ids])